Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi str làm đối số duy nhất. Hàm có thể xóa tối đa một ký tự từ chuỗi str và kiểm tra xem có thể biến nó thành palindrome không.
Ví dụ, nếu đầu vào là:
Đầu vào
const str = 'dr.awkward';
Đầu ra
const output = true;
Giải thích
Vì nếu xóa '.' khỏi chuỗi, chuỗi trở thành palindrome.
Ví dụ
Dưới đây là mã thực hiện:
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));
Kết quả
true