Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การสร้าง palindrome โดยใช้การลบไม่เกินหนึ่งครั้งใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับสตริง str เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว

ฟังก์ชันของเราอาจลบ มากที่สุด อักขระหนึ่งตัวจากสตริง str และเราต้องตรวจสอบว่าเราสามารถทำให้มันเป็นพาลินโดรมได้หรือไม่

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ

ป้อนข้อมูล

const str = 'dr.awkward';

ผลผลิต

const output = true;

คำอธิบายผลลัพธ์

เพราะถ้าเราลบ '.' ออกจากสตริง

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const str = 'dr.awkward';
const validPalindrome = (str = '') => {
   const valid = (left, right) => {
         for (let i = left; i <= Math.floor((left + right) / 2); i++) {
         if (str[i] !== str[right - (i - left)]) {
            return false
         }
      }
      return true
   }
   for (let i = 0; i <= Math.floor(str.length / 2); i++) {
      const right = str.length - 1 - i
      if (str[i] !== str[right]) {
         return valid(i, right - 1) || valid(i + 1, right)
      }
   }
   return true
}
console.log(validPalindrome(str));

ผลลัพธ์

true