我的解法
栈的应用
class Solution {
public boolean isValid(String s) {
if(s.length()==1)
return false;
if(s == null)
return true;
Stack<Character> stack = new Stack<Character>();
int i = 0;
for(i = 0;i < s.length();++i){
char c = s.charAt(i);
if(c == '(' || c == '[' || c == '{'){
stack.push(c);
}else{
if(stack.size() == 0)//检测 ")[" 这种情况
return false;
char top = stack.pop();
if(top == '(' && c != ')')
return false;
else if(top == '[' && c != ']')
return false;
else if(top == '{' && c != '}')
return false;
}
}
//简化为
return stack.isEmpty();
// if(stack.isEmpty()){
// return true;
// }else
// 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>() {{
put(')', '(');
put(']', '[');
put('}', '{');
}};
Deque<Character> stack = new LinkedList<Character>();
for (int i = 0; i < n; i++) {
char ch = s.charAt(i);
if (pairs.containsKey(ch)) {
if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {
return false;
}
stack.pop();
} else {
stack.push(ch);
}
}
return stack.isEmpty();
}
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/valid-parentheses/solution/you-xiao-de-gua-hao-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 若串长度为奇数,则必不可能匹配