2242: 回文(栈和队列)
Time Limit: 1 Sec Memory Limit: 1000 MB
Submit: 2 Solved: 2
Description
假设称正读和反读都相同的字符序列为“回文”,例如,‘abba‘ 和 ‘abcba‘是回文,‘abcde‘ 和 ‘ababab‘ 则不是回文。试写一个算法判别读入的一个以‘@‘为结束符的字符序列是否是“回文”。
Input
abcba
Output
是回文
Sample Input
ababab
Sample Output
不是回文
HINT
Source
Code:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 //与相同序列那道题差不多。将字符依次压入栈中,拿出来的时候就是倒序比较了。 2 3 #include <iostream> 4 #include <cstring> 5 #include <stack> 6 using namespace std; 7 int main() 8 { 9 string l; 10 while(cin>>l){ 11 int i; 12 stack <char> s; 13 for(i=0;i<l.length();++i) 14 s.push(l[i]); //将所有字符压到栈中 15 //因为是后进先出,所以从栈中去元素的时候是倒序取出的 16 //所以依次将栈中取出的元素和字符串从尾到头依次比较 17 for(i=0;i<l.length();++i){ 18 if(s.top()!=l[i]) 19 break; 20 s.pop(); //如果相等,抛出当前元素 21 } 22 //因为是将字符串中字符依次压栈的,所以长度相同,不需要判断是否栈空 23 if(i==l.length()) 24 cout<<"是回文"<<endl; 25 else 26 cout<<"不是回文"<<endl; 27 } 28 return 0; 29 }
Freecode : www.cnblogs.com/yym2013