解题思路:这是一道典型的可以用栈来解决的问题。做一个空栈。一个个读入字符直到字符串结尾。如果字符是一个开放符号,则将其推入栈中。如果字符是一个封闭符号,则当栈空时报错。否则,将栈元素弹出。如果弹出的符号不是对应的开放符号,则报错。在字符串结尾,如果栈非空则报错。
public class Solution {
public boolean isValid(String s) {
Map<Character,Character> map = new HashMap<>();
map.put('(', ')');
map.put('[', ']');
map.put('{', '}');
Stack<Character> stack = new Stack<>();
for(int i=0;i<s.length();i++) {
char curr = s.charAt(i);
if(map.keySet().contains(curr)) {
stack.push(curr);
}
else {
if(!stack.empty() && map.get(stack.peek()) == curr) {
stack.pop();
}
else {
return false;
}
}
}
return stack.empty();
}
}
使用栈验证括号序列
本文介绍了一种利用栈的数据结构来验证括号序列是否有效的算法实现。通过遍历输入字符串,遇到开括号将其压入栈中,遇到闭括号则检查栈顶元素是否匹配。若栈最终为空,则说明括号序列有效。
596

被折叠的 条评论
为什么被折叠?



