//例题3-2 #include <iostream> #include <string> using namespace std;
//思想值得注意 const string mirror = "A 3 HIL JM O 2TUVWXY51SE Z 8 "; const string ans[] = { "not a palindrome", "a regular palindrome", "a mirrored string", "a mirrored palindrome" }; char r(char ch) { if (isalpha(ch)) return mirror[ch - 'A']; else return mirror[ch - '0' + 25]; //ch - '0'为该数字大小,加上25即为其在mirror中位置www } int main(void) { string s; while (cin >> s) { bool isMirror = true; bool isPalindrome = true; for (int i = 0; i < s.size() / 2 + 1; i++) { if (s[i] != s[s.size() - i - 1]) isMirror = false; if (s[i] != r(s[s.size() - i - 1])) isPalindrome = false; } cout << s << " -- is "; if (isMirror && isPalindrome) cout << ans[3]; else if (isMirror && !isPalindrome) cout << ans[2]; else if (!isMirror && isPalindrome) cout << ans[1]; else cout << ans[0]; cout << endl; } }
没什么需要注意的。