模拟栈
class Solution {
public boolean isValid(String s) {
if (s.length() == 0)
return true;
if ((s.length() & 1) == 1)
return false;
char f[] = new char[s.length()+1];
int flag = 1; //记录待放的符号
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{') {
f[flag++] = s.charAt(i);
}
if (s.charAt(i) == ')' && f[--flag] != '(')
return false;
if (s.charAt(i) == ']' && f[--flag] != '[')
return false;
if (s.charAt(i) == '}' && f[--flag] != '{')
return false;
if(flag==0)return false;
}
if(flag!=1)return false;
return true;
}
}
也可以用栈
或者用计数 每扫描到右边 找出左边在哪里 并且减掉找左边的过程中其他左边