×

Kiểm Tra Một Chuỗi Có Phải Là Palindrome Hay Không Trong JavaScript

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:

  1. 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ố.
  2. 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.
  3. 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