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

การสร้างพาลินโดรมด้วยการลบได้สูงสุดหนึ่งตัวใน 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