堆栈
方法1:Stack
public boolean isValid(String s) {
Map<Character, Character> dict = new HashMap<>();
dict.put(']', '[');
dict.put(')', '(');
dict.put('}', '{');
Stack<Character> stk = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '[' || c == '(' || c == '{') stk.push(c);
else if (!stk.isEmpty() && dict.containsKey(c) && dict.get(c) == stk.peek()) stk.pop();
else return false;
}
return stk.isEmpty();
}方法2:Deque
详细参考基础与技巧
等价写法
方法1:栈
Follow Up:返回最长长度的下标索引
方法2:DP
方法3:贪心
方法1:栈
方法1:栈
方法2:DP

方法1:栈
使用栈的方式求解,Deque的使用技巧参见:Deque的主要使用方式

方法2:数组
解释
另
官解,很棒的思路

另
事实上,只有 () 会对字符串 S 贡献实质的分数,其它的括号只会将分数乘二或者将分数累加。因此,我们可以找到每一个 () 对应的深度 x,那么答案就是 2^x 的累加和。
Last updated