Một chuỗi là palindrome nếu nó đọc từ trái sang phải cũng giống như đọc từ phải sang trái. Dưới đây là cách kiểm tra một chuỗi có phải là palindrome hay không trong JavaScript.
Mã Nguồn:
Phương Pháp 1: Đảo Ngược Chuỗi
function isPalindrome(str) {
// Chuyển chuỗi về cùng một dạng chữ thường và loại bỏ các ký tự không phải là chữ cái và số
let cleanedStr = str.toLowerCase().replace(/[^a-z0-9]/g, '');
// Đảo ngược chuỗi
let reversedStr = cleanedStr.split('').reverse().join('');
// So sánh chuỗi đã làm sạch với chuỗi đảo ngược
return cleanedStr === reversedStr;
}
// Ví dụ kiểm tra
console.log(isPalindrome("A man, a plan, a canal, Panama")); // true
console.log(isPalindrome("racecar")); // true
console.log(isPalindrome("hello")); // false
Phương Pháp 2: Sử Dụng Vòng Lặp
function isPalindrome(str) {
// Chuyển chuỗi về cùng một dạng chữ thường và loại bỏ các ký tự không phải là chữ cái và số
let cleanedStr = str.toLowerCase().replace(/[^a-z0-9]/g, '');
let len = cleanedStr.length;
// So sánh các ký tự từ đầu và cuối chuỗi
for (let i = 0; i < len / 2; i++) {
if (cleanedStr[i] !== cleanedStr[len - 1 - i]) {
return false;
}
}
return true;
}
// Ví dụ kiểm tra
console.log(isPalindrome("A man, a plan, a canal, Panama")); // true
console.log(isPalindrome("racecar")); // true
console.log(isPalindrome("hello")); // false
Giải Thích:
-
Chuẩn Hóa Chuỗi:
- toLowerCase(): Chuyển toàn bộ chuỗi về chữ thường để không phân biệt chữ hoa và chữ thường.
- replace(/[^a-z0-9]/g, ''): Loại bỏ các ký tự không phải là chữ cái và số.
-
Phương Pháp 1: Đảo Ngược Chuỗi:
- split(''): Chuyển chuỗi thành mảng các ký tự.
- reverse(): Đảo ngược mảng.
- join(''): Kết hợp các ký tự thành chuỗi.
- So sánh chuỗi đã làm sạch với chuỗi đảo ngược để kiểm tra xem có phải là palindrome không.
-
Phương Pháp 2: Sử Dụng Vòng Lặp:
- Duyệt nửa đầu của chuỗi và so sánh với nửa sau.
- Nếu bất kỳ ký tự nào không khớp, chuỗi không phải là palindrome.
Tổng Quan:
- Palindrome: Một chuỗi đọc từ trái sang phải giống như đọc từ phải sang trái.
- Chuẩn Hóa Chuỗi: Chuyển chuỗi về dạng chuẩn để dễ kiểm tra.
- Phương Pháp Đảo Ngược: Đơn giản và dễ hiểu.
- Phương Pháp Vòng Lặp: Hiệu quả và không cần bộ nhớ phụ để lưu trữ chuỗi đảo ngược.
Ví Dụ Thực Tế:
console.log(isPalindrome("A man, a plan, a canal, Panama")); // true
console.log(isPalindrome("racecar")); // true
console.log(isPalindrome("hello")); // false
Trong ví dụ trên, chuỗi "A man, a plan, a canal, Panama" và "racecar" là palindrome, trong khi "hello" không phải.
Comments