题目描述
假设称正读和反读都相同的字符序列为“回文”,例如,‘abba‘ 和 ‘abcba‘是回文,‘abcde‘ 和 ‘ababab‘ 则不是回文。试写一个算法判别字符序列是否是“回文”。
输入
abcba
输出
是回文
样例输入 Copy
ababab
样例输出 Copy
不是回文
分析:
本题的话,我们可以利用栈。栈弹出,然后还有一个数组从左往右遍历。判断是否相等。
#include"stdio.h"
#include"string.h"
typedef struct {
char word[1000];
int top;
}SYM;
SYM sym;
void POP(char *e)
{
*e=sym.word[sym.top-1];
sym.top--;
}
int main()
{
char a[1000],e;
int i,j,k,len,mark;
while(~scanf("%s",a))
{
mark=1;
strcpy(sym.word,a);
len=strlen(a);
sym.top=len;
for(i=0;i<len;i++)
{
POP(&e);
if(a[i]!=e)
mark=0;
}
if(mark==1)
printf("是回文\n");
else
printf("不是回文\n");
}
}