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

Palindrome Program ใน JavaScript: รับเฉพาะ Alphanumeric

Palindrome Checker (Alphanumeric Only)

Palindrome = อ่านจากหน้าหลังได้เหมือนกัน (Ignore Case, Non-alphanumeric)

ขั้นตอน

  1. Lowercase ทั้ง String
  2. ลบ Non-alphanumeric ด้วย Regex /[\W_]/g (\W = Non-word, _ = Underscore)
  3. Reverse String
  4. Compare กับ Original

Implementation

<script>
  function palindrome(str) {
    // Remove non-alphanumeric, lowercase
    const cleaned = str.toLowerCase().replace(/[\W_]/g, '');
    // Reverse
    const reversed = cleaned.split('').reverse().join('');
    // Compare
    return cleaned === reversed;
  }
  
  console.log(palindrome('a929a*/(\';-=,.*')); // true
  console.log(palindrome('A man, a plan, a canal: Panama')); // true
  console.log(palindrome('race a car')); // false
  console.log(palindrome('Madam')); // true
</script>

Regex Explained

  • \W = Non-word character (เทียบเท่า [^a-zA-Z0-9_])
  • _ = Underscore (เพราะ \W ไม่รวม _)
  • g = Global (Replace All)
  • Alternative: /[^a-zA-Z0-9]/g

Alternative: Two Pointers (O(1) Space)

function palindromeTwoPointer(str) {
  const cleaned = str.toLowerCase().replace(/[\W_]/g, '');
  let left = 0, right = cleaned.length - 1;
  
  while (left < right) {
    if (cleaned[left] !== cleaned[right]) return false;
    left++;
    right--;
  }
  return true;
}

Test Cases

InputCleanedResult
a929a*/(';-=,.*a929atrue
A man, a plan, a canal: Panamaamanaplanacanalpanamatrue
race a carraceacarfalse
Madammadamtrue