Check If Word Is Valid After Substitutions LeetCode solution in Rust

1
impl Solution {
2
pub fn is_valid(s: String) -> bool {
3
let mut stack: Vec<[u8; 3]> = vec![[0, 0, 0]; 1];
4

5
for byte in s.as_bytes() {
6
let idx = (*byte - b'a') as usize;
7

8
if stack.last().unwrap()[idx] == 1 {
9
stack.push([0, 0, 0]);
10
}
11

12
let counts = stack.last_mut().unwrap();
13

14
counts[idx] = 1;
15
if counts[2] > counts[1] || counts[2] > counts[0] || counts[1] > counts[0] {
16
return false;
17
} else if *counts == [1, 1, 1] {
18
stack.pop();
19
if stack.len() == 0 {
20
stack.push([0, 0, 0]);
21
}
22
}
23
}
24

25
stack.len() == 1 && stack[0] == [0, 0, 0]
26
}
27
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0