01: #include <iostream> 02: #include <string> 03: using namespace std; 04: /** 05: Tests whether a string is a palindrome. A palindrome 06: is equal to its reverse, for example "rotor" or "racecar". 07: @param s a string 08: @return true if s is a palindrome 09: */ 10: bool is_palindrome(string s) 11: { // separate case for shortest strings 12: if (s.length() <= 1) return true; 13: 14: // get first and last character, converted to lowercase 15: char first = s[0]; 16: char last = s[s.length() - 1]; 17: 18: if (first == last) 19: { string shorter = s.substr(1, s.length() - 2); 20: return is_palindrome(shorter); 21: } 22: else return false; 23: } 24: 25: int main() 26: { cout << "Enter a string: "; 27: string input; 28: getline(cin, input); 29: cout << input << " is "; 30: if (!is_palindrome(input)) cout << "not "; 31: cout << "a palindrome" << endl; 32: return 0; 33: }