首页 > 试题广场 >

编程量* 难度* 性能要求*(1秒)

[问答题]
编程量*   难度*   性能要求*(1秒)
我们在进行英语阅读的时候, 会发现一个有趣的现象: 有些字串是左右对称的, 如madam。我们把这种字串称为 symmetry.text 即“对称文”。
现在有若干行字串, 每一行可以由数字、 标点符号、 空格符以及英文字符 (包括大小写) 组成。 要你帮忙编程判断是否是对称文, 否则, 就不能最大限度地发现有趣现象了 。

输入说明

每个字串为一行, 每行结束以回车符为标志, 可能有上百上千行也说不定。 当字串为000000”时,输入结束。

英文字符不区分大小写,即 Madam 亦为对称文。不要忘了“{<([”与“])>}”也是互为对称的。

输出说明

如果是对称文,则输出“Symmetry”,否则输出“Not symmetry”。每个结论占一行。




推荐
//===================================
//对称文
//===================================
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
//-----------------------------------
int main() {
  ifstream cin("symmety.in");
  for(string s; getline(cin,s) && s!="000000"; ){
    for(int i=0; i<s.length(); ++i) s[i]=toupper(s[i]);
    string t(s);
    reverse(t.begin(), t.end());
    for(int i=0; i<t.length(); ++i){
      if(t[i]== '(') t[i]= ') ';
      else if(t[i]== ') ') t[i]= '( ';
      else if(t[i]== '[') t[i]= '] ';
      else if(t[i]== '] ') t[i]= '[';
     else if(t[i]== '{') t[i]= '}';
     else if(t[i]== '}') t[i]= '{';
      else if(t[i]== '<') t[i]= '>';
     else if(t[i]== '>') t[i]= '< ';
    }
    cout<<(s==t ? "Symmetry\n" : "Not symmetry\n");
  }
}//===================================
优化代码:
//===================================
//对称文
//===================================
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
//-----------------------------------
bool isSym(const string& t){
  for(int i=0,j=t.length()-1; i<=t.length()/2; j--,i++)
    switch(t[j]){
      case'(': if(t[i]!= ')') return false; break;
      case')': if(t[i]!= '(') return false; break;
      case'[': if(t[i]!= '] ') return false; break;
      case']': if(t[i]!= '[ ') return false; break;
      case'{': if(t[i]!= '}') return false; break;
      case'}': if(t[i]!= '{') return false; break;
      case'<': if(t[i]!= '>') return false; break;
      case'>': if(t[i]!= '< ') return false; break;
      default: if(toupper(t[j])!=toupper(t[i])) return false;
    }
  return ture;
}//----------------------------------
int main(){
  ifstream cin("symmetry.in");
  for(string s; getline(cin,s) && s!="000000"; )
    cout<<(isSym(s) ? "Symmetry\n" : "Not symmetry\n");
}//===================================










发表于 2018-04-18 20:33:39 回复(0)