主要思想就是:将遇到左括号,将其入栈;遇到右括号,和栈顶元素匹配,若不成功,则不是回文串。最后栈中无元素,则为回文串。
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char a[105],s[105];
int i,len,top;
gets(a);//
len = strlen(a);//
top = 0;//栈的初始化
for(i = 0;i < len;i++)
{
if(a[i]=='{'||a[i]=='('||a[i]=='[')
{
s[++top] = a[i];//左括号入栈 ( { [
}
else
{
if(a[i]=='}')
{
if(s[top]=='{')
{
top--;
}
else
{
printf("NO");
return 0;
}
}
else if(a[i]==')')
{
if(s[top]=='(')
{
top--;
}
else
{
printf("NO");
return 0;
}
}
else if(a[i]==']')
{
if(s[top]=='[')
{
top--;
}
else
{
printf("NO");
return 0;
}
}
}
}
if(top==0)
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}