haar_lib/algo/paren.rs
1//! 括弧列が対応が取れているかを調べる
2
3/// 括弧列が対応が取れているかを調べる
4///
5/// **Time Complexity O(N)**
6pub fn check_paren<T: Copy + Eq>(s: impl IntoIterator<Item = T>, open: T, close: T) -> bool {
7 let mut stack = vec![];
8
9 for c in s {
10 if stack.last().is_some() {
11 if c == close {
12 stack.pop();
13 } else if c == open {
14 stack.push(c);
15 } else {
16 return false;
17 }
18 } else if c == open {
19 stack.push(c);
20 } else {
21 return false;
22 }
23 }
24
25 stack.is_empty()
26}