初学栈,想着检验一下自己的听课效果。于是搞了道简单题,没想到还是做了很久。虽然过程很艰辛,但是最后看到通过所有测试点的时候还是很开心hhhh。正反馈的感觉很好,要继续加油努力啊
bool isValid(char * s){
char j,k;
int len=strlen(s);
char a[len+1];//创建新字符串
int i;
int t=0;
int index=1;//做标记
for(i=0;i<len;i++)
{
j=s[i];
if(j=='('||j=='['||j=='{')
{
a[t++]=j;
index=0;//标记输入的是右括号
}
else{
if(i==0&&t==0)//第一次输入就是左括号,直接返回
{
return false;
}
if((t==0&&index==1))//当栈为空,继续输入且输入为左括号,防止下标越界
{
return false;
}
k=a[t-1];
if((k=='('&&j==')')||(k=='['&&j==']')||(k=='{'&&j=='}'))//与前一个符号比较
{
t--;//出栈
a[t]='\0';
index=1;//标记置为初始
}
else{
return false;
}
}
}
if(t==0)
{
return true;
}
else{
return false;
}
}