Valid Palindrome II Visualizer & Step-by-Step Algorithm Solution

Determine if a string can be a palindrome after deleting at most one character using two pointers.

Category: arrays | Difficulty: Easy

Tags: Two Pointers, String, Greedy

Valid Palindrome II

Character Array (length: 4)
a
0
b
1
c
2
a
3
100%
state
stringabca
length4
Initialization
1/13
Explanation

Starting validPalindrome on string "abca".

Source Code
1function validPalindrome(s: string): boolean {
2 let left = 0;
3 let right = s.length - 1;
4 while (left < right) {
5 if (s[left] !== s[right]) {
6 return (
7 isPalindrome(s, left + 1, right) || isPalindrome(s, left, right - 1)
8 );
9 }
10 left++;
11 right--;
12 }
13 return true;
14}
15
16function isPalindrome(s: string, left: number, right: number): boolean {
17 while (left < right) {
18 if (s[left] !== s[right]) return false;
19 left++;
20 right--;
21 }
22 return true;
23}