程序目的是为了实现括号匹配为leetcode上的
当测试数据为()时不知道为什么会进入第17行中然后直接返回false
实在想不明白希望有人能解释帮忙改正一下
bool isValid(char * s){
char text[10000],e;//text数组为栈
int top=-1,i;//top为栈顶指针
for(i=0;i<strlen(s);i++)
{
if(s[i]=='('||s[i]=='{'||s[i]=='[')//若s[i]为左括号,将栈顶指针加1后将其存入text中结束本次循环
{
top++;
text[top]==s[i];
continue;
}
if(top==-1){//若是s[i]为右括号但栈顶指针为-1说明栈空括号匹配失败返回false
return false;
}
e=text[top];//栈顶元素出栈
top--;//栈顶指针减1
if(s[i]==')'&&e!='('){//若是)但栈顶元素不匹配则返回false 后面同理
return false;
}
if(s[i]=='}'&&e!='{')
{
return false;
}
if(s[i]==']'&&e!='[')
{
return false;
}
}
if(top!=-1){//遍历结束后若栈为空说明匹配成功否则匹配失败
return false;
}else{
return true;
}
}
应该就第10行啊,其他好像没啥问题。。。