| 1 | pub fn validate_stack_sequences(pushed: Vec<i32>, popped: Vec<i32>) -> bool { |
| 2 | let mut stack: Vec<i32> = vec![]; |
| 3 | let mut pushed = pushed; |
| 4 | let mut popped = popped; |
| 5 | while pushed.len() > 0 { |
| 6 | let tmp = pushed.remove(0); |
| 7 | stack.push(tmp); |
| 8 | if tmp == popped[0] { |
| 9 | // 这里应该持续出栈 |
| 10 | while stack.iter().last().is_some() && *stack.iter().last().unwrap() == popped[0] { |
| 11 | stack.pop(); |
| 12 | popped.remove(0); |
| 13 | } |
| 14 | } |
| 15 | } |
| 16 | if stack.len() == 0 { return true } |
| 17 | stack.reverse(); |
| 18 | stack == popped |
| 19 | } |
| 20 | |
| 21 | fn main() { |
| 22 | println!("{:?}", validate_stack_sequences(vec![1,2,3,4,5], vec![4,5,3,2,1])); |