给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
class Solution {
public boolean isValid(String s) {
char[] arr = new char[s.length()];
int p = 0;
int i = 0;
for(i = 0; i < s.length(); i++){
if(s.charAt(i) == '('||s.charAt(i) == '['||s.charAt(i) == '{'){
arr[p] = s.charAt(i);
p++;
}else{
if(p == 0){
return false;
}
if(s.charAt(i) == ')' && arr[p-1] == '('){
p--;
}else if(s.charAt(i) == ']' && arr[p-1] == '['){
p--;
}else if(s.charAt(i) == '}' && arr[p-1] == '{'){
p--;
}else{
return false;
}
}
}
if(p != 0){
return false;
}else{
return true;
}
}
}
算法还好,主要是越界问题要考虑一下。