简介
栈的应用
code
class Solution {
stack<char> ss;
map<char, char> m;
public:
bool isValid(string s) {
m['('] = ')';
m['{'] = '}';
m['['] = ']';
for(auto it : s){
if(it == '(' || it == '{' || it == '[') {
ss.push(it);
}
else {
if(ss.empty()) {
return false;
}
if(m[ss.top()] != it){
return false;
}else{
ss.pop();
}
}
}
if(ss.size() == 0){
return true;
}
return false;
}
};
class Solution {
public boolean isValid(String s) {
int n = s.length();
if (n % 2 == 1) {
return false;
}
Map<Character, Character> pairs = new HashMap<Character, Character>(); // 类似char 的原始类型??
pairs.put(')', '(');
pairs.put(']', '[');
pairs.put('}', '{');
Deque<Character> stack = new LinkedList<Character>(); // 用deque来模拟栈操作
for (int i = 0; i < n; i++) {
char ch = s.charAt(i); // 从string中取数据
if (pairs.containsKey(ch)) { // map 使用containsKey 判断是否存在. 不像C++ 可以重载括号的缘故.
if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {
return false;
}
stack.pop();
} else {
stack.push(ch);
}
}
return stack.isEmpty(); // 专门和c++不同的isEmpty()操作.
}
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/valid-parentheses/solution/you-xiao-de-gua-hao-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》