写这个简单的程序就用了两个小时,各种边界条件考虑不周,各种语法错误,正是醉了
思路很简单,基于栈的思想。如果遇到匹配的就出栈,不匹配就入栈,最后如果栈为空则返回true,否则则返回false。
1.C++中string类的使用 length()求长度,at()查找相应位置的字符,下标从0开始
2.栈为空的时候,需要进行判断
3.break直接跳出循环,循环不执行;continue 跳出本次循环,循环继续执行。
class Solution {
public:
bool isValid(string s) {
int i, head;
char stack[100], ch;
i = 0;
head = 0;
while(i < s.length()){
ch = s.at(i);
i++;
if(head > 0 && (ch == ')' && stack[head - 1] == '(' || ch == '}' && stack[head - 1] == '{' || ch == ']' && stack[head - 1] == '[')){
head = head -1;
continue;
}else if(ch == ')' || ch == '}' || ch == ']'){
return false;
}
stack[head] = ch;
head++;
}
if(head == 0)
return true;
else
return false;
}
};