summaryrefslogtreecommitdiff
path: root/src/bin/p0003.rs
blob: 7293c13b2fb395c07cd289f3abfc35dd97ada6b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
struct Solution {}

impl Solution {
    pub fn length_of_longest_substring(s: String) -> i32 {
        let mut set: [u8;256] = [0;256];
        let mut i1: usize = 0;
        let mut i2: usize = 0;
        let mut max: i32 = 0;
        loop {
            if i1 >= s.len() { break; }
            if set[s.as_bytes()[i1] as usize] == 0 {
                set[s.as_bytes()[i1] as usize] = 1;
                i1 = i1 + 1;
                if i1 as i32 - i2 as i32 > max { max = i1 as i32 - i2 as i32 }
                continue;
            } else {
                loop {
                    set[s.as_bytes()[i2]  as usize] = 0;
                    i2 = i2 + 1;
                    if set[s.as_bytes()[i1] as usize] == 0 {
                        break;
                    } else {
                        continue;
                    }
                }
            }
        }
        max
    }
}

fn main() {
    println!("{:?}", Solution::length_of_longest_substring("abcabcbb".to_string()));
}