给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
解析:对于这种前后匹配的问题,脑袋里第一个想法就是使用栈来实现。
代码:
class Solution {
public boolean isValid(String s) {
if(s.equals("") || s == null)
return true;
if(s.length() % 2 != 0)
return false;
char[] stocharArr = s.toCharArray();
Stack<Character> stack = new Stack<>();
boolean flag = false;
for(int i = 0; i<stocharArr.length; i++){
char ch = stocharArr[i];
if(ch == '(' || ch == '{' || ch == '['){
stack.push(ch);
}else{
if (!stack.empty()) {
char chpop = stack.pop();
if ((ch == ')' && chpop == '(') || (ch == ']' && chpop == '[') || (ch == '}' && chpop == '{'))
flag = true;
else
return false;
}
}
}
if(!stack.isEmpty())
return false;
return flag;
}
}