// Time Complexity: O(n) // Space Complexity: O(1) class Solution { static bool isAlphaNum(String s) { if ((s.codeUnits[0] >= 'a'.codeUnitAt(0) && s.codeUnits[0] <= 'z'.codeUnitAt(0)) || (s.codeUnits[0] >= 'A'.codeUnitAt(0) && s.codeUnits[0] <= 'Z'.codeUnitAt(0)) || (s.codeUnits[0] >= '0'.codeUnitAt(0) && s.codeUnits[0] <= '9'.codeUnitAt(0))) { return true; } return false; } bool isPalindrome(String s) { var left = 0, right = s.length - 1; while (left < right) { while (!Solution.isAlphaNum(s[left]) && left < right) left++; while (!Solution.isAlphaNum(s[right]) && left < right) right--; if (s[left].toLowerCase() != s[right].toLowerCase()) return false; left++; right--; } return true; } }