สมมติว่าเราต้องเขียนฟังก์ชันที่รับตัวเลขและคืนค่าบูลีนตามว่าตัวเลขนั้นเป็น palindrome หรือไม่ มีข้อจำกัดคือต้องทำโดยไม่แปลงตัวเลขเป็นสตริงหรือชนิดข้อมูลอื่น
ตัวเลข Palindrome คือตัวเลขที่อ่านจากหน้าหลังและหลังหน้าได้เหมือนกัน
ตัวอย่าง −
121 343 12321
ดังนั้น มาเขียนโค้ดสำหรับฟังก์ชันนี้
ตัวอย่าง
const isPalindrome = (num) => { // หาตัวคูณที่เหมาะสมเพื่อดึงหลักแรก let factor = 1; while (num / factor >= 10){ factor *= 10; } while (num) { let first = Math.floor(num / factor); let last = num % 10; // ถ้าหลักแรกและหลักสุดท้ายไม่เหมือนกัน คืนค่า false if (first != last){ return false; } // ลบหลักแรกและหลักสุดท้ายออกจากตัวเลข num = Math.floor((num % factor) / 10); // ลดตัวคูณลง 100 เท่า เพราะลบ 2 หลัก factor = factor / 100; } return true; }; console.log(isPalindrome(123241)); console.log(isPalindrome(12321)); console.log(isPalindrome(145232541)); console.log(isPalindrome(1231));ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็นดังนี้
false true true false