ปัญหา
ฟังก์ชันรับสตริง ตรวจสอบว่าลบตัวอักษรได้สูงสุด 1 ตัว แล้วได้พาลินโดรมหรือไม่
ตัวอย่าง
const str = 'kjlk';
ลบ 'l' → "kjk" เป็นพาลินโดรม → ผลลัพธ์ true
โค้ดตัวอย่าง
const str = 'kjlk';
const isPalindrome = (str = '', start, end) => {
while (start < end) {
if (str[start] != str[end]) { return false; }
start++; end--;
}
return true;
};
const canMakePalindrome = (str = '') => {
let left = 0, right = str.length - 1;
while (left < right - 1) {
if (str[left] !== str[right]) {
if (isPalindrome(str, left, right - 1)) { return true; }
if (isPalindrome(str, left + 1, right)) { return true; }
return false;
} else { left++; right--; }
}
return true;
};
console.log(canMakePalindrome(str));
ผลลัพธ์
true