题目
给定一个只包括 ‘(‘,’)’,'{‘,’}’,'[‘,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
示例
输入: “()”
输出: true
思考
模拟栈遇到左括号就压进栈,与取出的括号匹配的就pop,与取出的括号不匹配就返回false,如果栈中的左括号数量大于总括号数量一半加一就直接返回false
代码
class Solution {
public boolean isValid(String s) {
if (s.length() == 0) return true;
char[] charArray = new char[s.length() + 1];
int x = 1;
for (char c : s.toCharArray()) {
if (x > s.length() / 2 + 1) return false;
if (c == '(' || c == '{' || c == '[') {
charArray[x++] = c;
} else {
x--;
if (c == ')' && charArray[x] != '(')
return false;
if (c == '}' && charArray[x] != '{')
return false;
if (c == ']' && charArray[x] != '[')
return false;
}
}
return x == 1;
}
}