zoukankan      html  css  js  c++  java
  • 烟大 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

  • 相关阅读:
    【模板】Sparse-Table
    UVa 11235 Frequent values
    【模板】树状数组
    UVa 1428 Ping pong
    数学技巧
    UVa 11300 Spreading the Wealth
    UVa 11729 Commando War
    UVa 11292 Dragon of Loowater
    POJ 3627 Bookshelf
    POJ 1056 IMMEDIATE DECODABILITY
  • 原文地址:https://www.cnblogs.com/yym2013/p/3255212.html
Copyright © 2011-2022 走看看