编程量* 难度* 性能要求*(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"); }//===================================