Advertisement
Derga

Untitled

Jun 19th, 2024
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     bool IsLetterOrDigit(char ch) {
  4.         return ('a' <= ch && ch <= 'z') ||
  5.                ('A' <= ch && ch <= 'Z') ||
  6.                ('0' <= ch && ch <= '9');
  7.     }
  8.  
  9.     bool isPalindrome(string s) {
  10.         if (s.size() < 2) return true;
  11.         int l = 0;
  12.         int r = s.size() - 1;
  13.         while(l < r) {
  14.            while (l < r && !IsLetterOrDigit(s[l])) {
  15.                 ++l;
  16.                 continue;  
  17.             }
  18.  
  19.             while (l < r && !IsLetterOrDigit(s[r])) {
  20.                 --r;
  21.                 continue;
  22.             }
  23.  
  24.             char sl = s[l];
  25.             char sr = s[r];
  26.             if ('A' <= sr && sr <= 'Z') sr += 'a' - 'A';
  27.             if ('A' <= sl && sl <= 'Z') sl += 'a' - 'A';
  28.  
  29.             if (sl != sr) return false;
  30.            
  31.             ++l;
  32.             --r;
  33.         }
  34.         return true;
  35.     }
  36. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement