烟大 2242: 回文(栈和队列)

来源:互联网 发布:最新网络诈骗新闻2017 编辑:程序博客网 时间:2024/05/01 02:34

2242: 回文(栈和队列)

Time Limit: 1 Sec  Memory Limit: 1000 MB

Submit: 2  Solved: 2

[Submit][Status][Web Board]

Description

 假设称正读和反读都相同的字符序列为“回文”,例如,‘abba‘ 和 ‘abcba‘是回文,‘abcde‘ 和 ‘ababab‘ 则不是回文。试写一个算法判别读入的一个以‘@‘为结束符的字符序列是否是“回文”。

Input

abcba

Output

是回文

Sample Input

ababab

Sample Output

不是回文

HINT

Source


Code:

 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         else26             cout<<"不是回文"<<endl;27     }28     return 0;29 }
View Code

 

Freecode : www.cnblogs.com/yym2013

0 0