在看到厄尔巴岛之前,我曾经不可一世

来源:互联网 发布:node.js 个人博客 编辑:程序博客网 时间:2024/05/06 15:25

题目描述

你应该听说过回文吧?所谓回文,简单地说,就是顺着读和反过来读都是一样的。中国历史上还出现过回文诗,其中大名鼎鼎的四首是:

莺啼岸柳弄春晴,柳弄春晴夜月明。 明月夜晴春弄柳,晴春弄柳岸啼莺。
香莲碧水动风凉,水动风凉夏日长。 长日夏凉风动水,凉风动水碧莲香。
秋江楚雁宿沙洲,雁宿沙洲浅水流。 流水浅洲沙宿雁,洲沙宿雁楚江秋。
红炉透炭炙寒风,炭炙寒风御隆冬。 冬隆御风寒炙炭,风寒炙炭透炉红。

咱们今天来一次“崇洋,但不媚外”。咱们暂时不考虑中文回文,而是考虑英文回文。简单的英文回文有:aba、madam等。我们现在给出回文的定义:滤去所有非字母字符(包括空格)后,不考虑字母的大小写,从左向右和从右向左读都一样的词、短语或句子。英文里面最有名的回文据说出自拿破仑同志之手:Able was I ere I saw Elba.意思是:在看到厄尔巴岛之前,我曾经不可一世。注:这里的ere是古字,现在偶尔还有人使用,和before(在……之前)同义,拿破仑同志对俄战争失败后被放逐到Elba岛。

输入

第一行为一个整数t,表示有t组测试数据。 接下来有t行,每行一个字符串。每个字符串一定含有字母字符。

输出

对于每个字符串,判断它是否是我们定义的回文串,如果是输出Yes,否则输出No。

样例输入

5abcMadamMadam, I’m adam.Golf, No Sir, prefer prison flog!Able was I ere I saw Elba.

样例输出

NoYesYesYesYes
#include <iostream> #include <cmath> #include <cstring> using namespace std; const int a = 100; char str[a+1]; char t[a+1]; int main() {     int j=0,n,i,len,f;     cin >> n;     cin.get();     while (n--)     {         char t[a+1]={0};         f=1;         j=0;         cin.getline(str,a+1);        for (i=0;str[i]!='\0';i++)        {            if (                (str[i]>='a'&&str[i]<='z')                ||(str[i]>='A'&&str[i]<='Z')                )            {                t[j]=str[i];                j++;            }        }       /*for (i=0;t[i]!='\0';i++)        {            cout << t[i] << endl;        }        */       len=strlen(t);        for (i=0;i<len/2;i++)        {            if ((t[i]!=t[len-1-i])&&abs(t[i]-t[len-1-i])!=32)            {                f=0;            }        }        if (f==0)        {            cout << "No" << endl;        }         else       {            cout << "Yes" << endl;        }       }     return 0; } 

1 0
原创粉丝点击