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

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         else

26             cout<<"不是回文"<<endl;

27     }

28     return 0;

29 }
View Code

 

Freecode : www.cnblogs.com/yym2013

你可能感兴趣的:(队列)