用一个栈 例如数组int a[10000]和一个指针p1,栈的大小取自题目要求,当然也可以取自 s 的位数;
用一个循环遍历s ,如果是“[ ( {"就入栈
如果是”])}"就出栈,同时对比栈中最上面的值,如果对应就继续,不对应就false。
直到循环结束,如果p1!=0,表示栈中还有残留的 return false;
全部匹配完 p1只能等于0
bool isValid(char* s ) {
// write code here
int p = 0;
int p1 = 0;
int a[10000];
while (s[p]) {
if (s[p] == '(') {
a[p1] = s[p];
p1++;
p++;
continue;
}
if (s[p] == '{') {
a[p1] = s[p];
p1++;
p++;
continue;
}
if (s[p] == '[') {
a[p1] = s[p];
p1++;
p++;
continue;
}
if (s[p] == ')') {
p1--;
p++;
if(a[p1]!='('){
return false;
}
continue;
}
if (s[p] == ']') {
p1--;
p++;
if(a[p1]!='['){
return false;
}
continue;
}
if (s[p] == '}') {
p1--;
p++;
if(a[p1]!='{'){
return false;
}
continue;
}
}
if(p1==0){
return true;
}else {
return false;
}
}