Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ตรวจสอบว่าสตริงสามารถทำให้เป็นพาลินโดรมได้ด้วยการลบได้สูงสุด 1 ตัวอักษร (JavaScript)

ปัญหา

ฟังก์ชันรับสตริง ตรวจสอบว่าลบตัวอักษรได้สูงสุด 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