UVa 401 Palindromes

/* coder: ACboy date: 2010-2-22 result: AC */ #include <iostream> #include <string> #include <algorithm> using namespace std; char one[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; char two[] = "A 3 HIL JM O 2TUVWXY51SE Z 8 "; int palindrome(string &k) { int flag = 1; int len = k.size(); for (int i = 0; i < len / 2; i++) { if (k[i] != k[len - 1 - i]) { flag = 0; break; } } return flag; } int findPosition(char a) { int i; if (a == '0') a = 'O'; for (i = 0; i < 35; i++) { if (a == one[i]) return i; } return -1; } int mirror(string &k) { string temp = k; int i, len; len = temp.size(); for (i = 0; i < len; i++) { temp[i] = two[findPosition(temp[i])]; } int flag = 1; for (i = len - 1; i >= 0; i--) { if (temp[i] != k[len - 1 - i]) { flag = 0; break; } } return flag; } int main() { string input; #ifndef ONLINE_JUDGE freopen("401.txt", "r", stdin); #endif int size = 0; while (getline(cin, input)) { int a = palindrome(input); int b = mirror(input); if (a && b) { cout << input << " -- is a mirrored palindrome." << endl; } else if (a && !b) { cout << input << " -- is a regular palindrome." << endl; } else if (b && !a) { cout << input << " -- is a mirrored string." << endl; } else { cout << input << " -- is not a palindrome." << endl; } cout << endl; } return 0; }

你可能感兴趣的:(String,input,2010)