Cần viết hàm JS nhận chuỗi, kiểm tra xem có thể xóa tối đa một ký tự để chuỗi thành palindrome không. Trả về true nếu có, false nếu không.
Ví dụ:
Nếu chuỗi đầu vào:
const str = 'kjlk';
Kết quả:
const output = true;
vì xóa 'l' còn 'kjk' là palindrome.
Ví dụ
Mã thực hiện:
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));
Kết quả
Kết quả in ra console:
true