import java.util.*;
//先向栈中放入第一个字符,然后开始遍历字符串
//如果栈为空,就压入
//如果栈顶元素与当前元素不配对(不是同类或者是本身),就压入
//其余情况就弹出
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
if(s.length()%2!=0){
return false;
}
LinkedList<Character> stack = new LinkedList<>();
stack.push(s.charAt(0));
for(int i = 1; i < s.length(); i++){
if(stack.isEmpty()||Math.abs(s.charAt(i)-stack.peekFirst())>3 || Math.abs(s.charAt(i)-stack.peekFirst())==0){
stack.push(s.charAt(i));
}else{
stack.pop();
}
}
return stack.isEmpty();
}
}