47,901
社区成员




设正读和反读都相同的字符序列为“回文”,如“abbabba”、“abcba”等。试写一个能 识别读入的以“@”为结束符的字符序列是否是回文的函数。
具体实现如下:
void jugde(){
char ch;
int tmp;//计数器
stack<char> T;
cin>>ch;
while(ch!='@'){
tmp++;
T.push(ch);
cin>>ch;
}
stack<char> S;//另外用一个栈空间,对半比较
for(int i=0;i<tmp/2;i++){
S.push(T.top());
T.pop();
}
if(tmp%2) T.pop();//当含有奇数个元素时,应该将最中间的元素出栈
while(!S.empty()){
if(S.top()!=T.top()){
cout<<"不是回文";
return ;
}
S.pop();T.pop();
}
cout<<"是回文";
}
需要的头文件:
#include <iostream>
#include <stack>