diff --git a/work/Easy/Two Pointers/125.valid-palindrome.js b/work/Easy/Two Pointers/125.valid-palindrome.js new file mode 100644 index 0000000..bb39fc7 --- /dev/null +++ b/work/Easy/Two Pointers/125.valid-palindrome.js @@ -0,0 +1,64 @@ +/* + * 125. Valid Palindrome + * Difficulty: Easy + * https://leetcode.com/problems/valid-palindrome/ + * + * ────────────────────────────────────────────────── + * + * A phrase is a palindrome if, after converting all uppercase letters + * into lowercase letters and removing all non-alphanumeric characters, + * it reads the same forward and backward. Alphanumeric characters + * include letters and numbers. + * + * Given a string s, return true if it is a palindrome, or false + * otherwise. + * + * + * + * Example 1: + * + * Input: s = "A man, a plan, a canal: Panama" + * Output: true + * Explanation: "amanaplanacanalpanama" is a palindrome. + * + * Example 2: + * + * Input: s = "race a car" + * Output: false + * Explanation: "raceacar" is not a palindrome. + * + * Example 3: + * + * Input: s = " " + * Output: true + * Explanation: s is an empty string "" after removing non-alphanumeric + * characters. + * Since an empty string reads the same forward and backward, it is a + * palindrome. + * + * + * + * Constraints: + * + * • 1 <= s.length <= 2 * 10^5 + * + * • s consists only of printable ASCII characters. +*/ + +/** + * @param {string} s + * @return {boolean} + */ +var isPalindrome = function(s) { + let normal = s.replace(/[^a-zA-Z0-9]/g, "").toLowerCase() + let i = 0, j = normal.length - 1; + + while (i < j) { + if(normal[i] !== normal[j]) { + return false; + } + i++; + j--; + } + return true; +};