mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
51 lines
1.2 KiB
Plaintext
51 lines
1.2 KiB
Plaintext
---
|
|
title: '125. Valid Palindrome'
|
|
description: 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
|
|
sidebar:
|
|
badge: 'Easy'
|
|
---
|
|
|
|
<Badge variant="accent">Two Pointers</Badge>
|
|
|
|
### 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.
|
|
|
|
## Solution
|
|
|
|
```js
|
|
/**
|
|
* @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;
|
|
};
|
|
```
|