LeetCode:20. 有效的括号
问题描述
解决方案:
1.思路
- 借助栈先入后出特点。
- 建立栈 stack,遍历字符串 s 并按照算法流程一一判断;
- 遍历输入字符串sss,若遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈,则遍历完所有括号后 stack 仍然为空;
- 建立哈希表 dic 构建左右括号对应关系:keykeykey左括号,valuevaluevalue为 右括号;这样查询 两个括号是否对应只需O(1)O(1)O(1) 时间复杂度。
2.代码实现
class Solution {
private static final Map<Character, Character> map = new HashMap<Character, Character>() {
{
put('{', '}');
put('[', ']');
put('(', ')');
put('?', '?');
}
};
public boolean isValid(String s) {
if (s.length(<