Advertisement
vlatkovski

Check if string is palindrome

Jul 30th, 2019
678
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.01 KB | None | 0 0
  1. #include <string>
  2. #include <iostream>
  3.  
  4. class palindrome_Checker {
  5.     public:
  6.  
  7.     palindrome_Checker() {
  8.         Current_string = "no string currently set";
  9.     }
  10.  
  11.     std::string Get_string() {
  12.         return Current_string;
  13.     }
  14.  
  15.     void Set_string(std::string newWord) {
  16.         Current_string.clear();
  17.         Current_string.resize(newWord.size());
  18.         for (unsigned long long int i = 0; i < (unsigned long long int)Current_string.size(); i = i + 1) {
  19.             Current_string[i] = newWord[i];
  20.         }
  21.     }
  22.  
  23.     std::string Current_string;
  24.     bool Is_Palindrome;
  25.  
  26.     bool StringHasSpace(std::string Current_string) {
  27.         for (unsigned long long int i = 0; i < (unsigned long long int)Current_string.size(); i = i+1) {
  28.             if (Current_string[i] == ' ') {
  29.                 return true;
  30.             }
  31.         }
  32.         return false;
  33.     }
  34.  
  35.     std::string removeFirstSpace(std::string Current_string) {
  36.         std::string New_String = "";
  37.         for (unsigned long long int i = 0; i < (unsigned long long int)Current_string.size(); i = i+1) {
  38.             if (Current_string[i] == ' ') {
  39.                 for (int j = i+1; j < (signed)Current_string.size(); j= j+ 1) { New_String += Current_string[j]; }
  40.                 break;
  41.             } else {
  42.                 New_String += Current_string[i];
  43.             }
  44.         }
  45.         return New_String;
  46.     }
  47.  
  48.     int GetFirstCapitalLetterPosition(std::string Current_string) {
  49.         for (unsigned long long int i = 0; i < (unsigned long long int)Current_string.size(); i = i+1) {
  50.             if (Current_string[i] == 'A' || Current_string[i] == 'B' || Current_string[i] == 'C' || Current_string[i] == 'D' || Current_string[i] == 'E' || Current_string[i] == 'F' || Current_string[i] == 'G' || Current_string[i] == 'H' || Current_string[i] == 'I' || Current_string[i] == 'J' || Current_string[i] == 'K' || Current_string[i] == 'L' || Current_string[i] == 'M' || Current_string[i] == 'N' || Current_string[i] == 'O' || Current_string[i] == 'P' || Current_string[i] == 'Q' || Current_string[i] == 'R' || Current_string[i] == 'S' || Current_string[i] == 'T' || Current_string[i] == 'U' || Current_string[i] == 'V' || Current_string[i] == 'W' || Current_string[i] == 'X' || Current_string[i] == 'Y' || Current_string[i] == 'Z' || false) {
  51.                 return i;
  52.             }
  53.         }
  54.         return -1;
  55.     }
  56.  
  57.     char ConvertToLowerCase(char Current_char) {
  58.         if (Current_char == 'A') {
  59.         return 'a';
  60.         }
  61.         if (Current_char == 'B') {
  62.         return 'b';
  63.         }
  64.         if (Current_char == 'C') {
  65.         return 'c';
  66.         }
  67.         if (Current_char == 'D') {
  68.         return 'd';
  69.         }
  70.         if (Current_char == 'E') {
  71.         return 'e';
  72.         }
  73.         if (Current_char == 'F') {
  74.         return 'f';
  75.         }
  76.         if (Current_char == 'G') {
  77.         return 'g';
  78.         }
  79.         if (Current_char == 'H') {
  80.         return 'h';
  81.         }
  82.         if (Current_char == 'I') {
  83.         return 'i';
  84.         }
  85.         if (Current_char == 'J') {
  86.         return 'j';
  87.         }
  88.         if (Current_char == 'K') {
  89.         return 'k';
  90.         }
  91.         if (Current_char == 'L') {
  92.         return 'l';
  93.         }
  94.         if (Current_char == 'M') {
  95.         return 'm';
  96.         }
  97.         if (Current_char == 'N') {
  98.         return 'n';
  99.         }
  100.         if (Current_char == 'O') {
  101.         return 'o';
  102.         }
  103.         if (Current_char == 'P') {
  104.         return 'p';
  105.         }
  106.         if (Current_char == 'Q') {
  107.         return 'q';
  108.         }
  109.         if (Current_char == 'R') {
  110.         return 'r';
  111.         }
  112.         if (Current_char == 'S') {
  113.         return 's';
  114.         }
  115.         if (Current_char == 'T') {
  116.         return 't';
  117.         }
  118.         if (Current_char == 'U') {
  119.         return 'u';
  120.         }
  121.         if (Current_char == 'V') {
  122.         return 'v';
  123.         }
  124.         if (Current_char == 'W') {
  125.         return 'w';
  126.         }
  127.         if (Current_char == 'X') {
  128.         return 'x';
  129.         }
  130.         if (Current_char == 'Y') {
  131.         return 'y';
  132.         }
  133.         if (Current_char == 'Z') {
  134.         return 'z';
  135.         }
  136.         return Current_char;
  137.     }
  138.  
  139.     void DetermineIfPalindrome() {
  140.         if (StringHasSpace(Current_string)) {
  141.             while (1 > 0) {
  142.                 if (StringHasSpace(Current_string)) {
  143.                     Current_string = removeFirstSpace(Current_string);
  144.                 } else {
  145.                     break;
  146.                 }
  147.             }
  148.         }
  149.         if (GetFirstCapitalLetterPosition(Current_string) != -1) {
  150.             while (1 > 0) {
  151.                 Current_string[GetFirstCapitalLetterPosition(Current_string)] = ConvertToLowerCase(Current_string[GetFirstCapitalLetterPosition(Current_string)]);
  152.                 if (!StringHasSpace(Current_string)) {
  153.                     break;
  154.                 }
  155.             }
  156.         }
  157.         if (Current_string.size() == 0) {
  158.             Is_Palindrome = true;
  159.         }
  160.         if (Current_string.size() == 1) {
  161.             Is_Palindrome = 1;
  162.         }
  163.         if (Current_string.size() > 1) {
  164.             if (Current_string[0] == Current_string[Current_string.size() - 1]) {
  165.                 std::string Current_string_NEW = "";
  166.                 for (long int i = 1; i < (long int)Current_string.size() - 1; ++i) {
  167.                     Current_string_NEW += Current_string.at(i);
  168.                 }
  169.                 Current_string = Current_string_NEW;
  170.                 DetermineIfPalindrome();
  171.             } else {
  172.                 Is_Palindrome = 0;
  173.             }
  174.         }
  175.     }
  176.  
  177.     bool SeeIfItIsPalindrome() {
  178.         return Is_Palindrome == true;
  179.     }
  180.  
  181.     bool is_palindrome(std::string target) {
  182.         Set_string(target);
  183.         Is_Palindrome = false;
  184.         DetermineIfPalindrome();
  185.         return SeeIfItIsPalindrome();
  186.     }
  187.  
  188. };
  189.  
  190. int main() {
  191.     std::string s;
  192.     std::getline(std::cin, s);
  193.     palindrome_Checker p;
  194.     std::cout << p.is_palindrome(s) << std::endl;
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement