//例题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;
}
}
没什么需要注意的。