ปัญหา
เราต้องเขียนฟังก์ชัน 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