Cần viết hàm nhận một số và trả về boolean cho biết số đó có phải palindrome hay không. Yêu cầu: không chuyển số thành chuỗi hay kiểu dữ liệu khác.
Số Palindrome là số đọc từ trái sang phải và phải sang trái giống nhau. Ví dụ: 121, 343, 12321.
Mã cho hàm này:
Ví dụ
const isPalindrome = (num) => {
// Tìm factor phù hợp để tách chữ số đầu tiên
let factor = 1;
while (num / factor >= 10) {
factor *= 10;
}
while (num) {
let first = Math.floor(num / factor);
let last = num % 10;
// Nếu chữ số đầu và cuối khác nhau thì không phải palindrome
if (first != last) {
return false;
}
// Loại bỏ chữ số đầu và cuối
num = Math.floor((num % factor) / 10);
// Giảm factor 100 lần vì đã bỏ 2 chữ số
factor = factor / 100;
}
return true;
};
console.log(isPalindrome(123241));
console.log(isPalindrome(12321));
console.log(isPalindrome(145232541));
console.log(isPalindrome(1231));Kết quả
Đầu ra trong console sẽ là:
false true true false