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