首页 > 代码库 > 在看到厄尔巴岛之前,我曾经不可一世
在看到厄尔巴岛之前,我曾经不可一世
题目描述
你应该听说过回文吧?所谓回文,简单地说,就是顺着读和反过来读都是一样的。中国历史上还出现过回文诗,其中大名鼎鼎的四首是:
咱们今天来一次“崇洋,但不媚外”。咱们暂时不考虑中文回文,而是考虑英文回文。简单的英文回文有:aba、madam等。我们现在给出回文的定义:滤去所有非字母字符(包括空格)后,不考虑字母的大小写,从左向右和从右向左读都一样的词、短语或句子。英文里面最有名的回文据说出自拿破仑同志之手:Able was I ere I saw Elba.意思是:在看到厄尔巴岛之前,我曾经不可一世。注:这里的ere是古字,现在偶尔还有人使用,和before(在……之前)同义,拿破仑同志对俄战争失败后被放逐到Elba岛。
输入
第一行为一个整数t,表示有t组测试数据。 接下来有t行,每行一个字符串。每个字符串一定含有字母字符。
输出
对于每个字符串,判断它是否是我们定义的回文串,如果是输出Yes,否则输出No。
样例输入
5 abc Madam Madam, I’m adam. Golf, No Sir, prefer prison flog! Able was I ere I saw Elba.
样例输出
No Yes Yes Yes Yes#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; }
在看到厄尔巴岛之前,我曾经不可一世
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。