回文數(shù)(Palindrome Number)是指一個數(shù)字從左往右讀與從右往左讀都相同的數(shù),比如121、1221、555等等。在 JavaScript 中,我們可以使用各種方法來判斷一個數(shù)是否為回文數(shù)。
最常見的方法是將數(shù)字轉換為字符串,然后反轉字符串再與原字符串比較。如果兩個字符串相同,則該數(shù)是回文數(shù),否則則不是。下面是一個使用 JavaScript 實現(xiàn)的例子:
function isPalindrome(num) { var str = num.toString(); var reverseStr = str.split('').reverse().join(''); return str === reverseStr; } console.log(isPalindrome(121)); // true console.log(isPalindrome(123)); // false
上面的代碼首先將數(shù)字轉換為字符串,然后使用字符串的 split() 方法將字符串拆分為字符數(shù)組,接著使用數(shù)組的 reverse() 方法將數(shù)組反轉,最后使用 join() 方法將字符數(shù)組合并為反轉后的字符串。最后將原字符串與反轉后的字符串進行比較,如果相同就是回文數(shù)。
除了字符串反轉的方法外,我們還可以使用雙指針法(Two Pointers)來判斷一個數(shù)是否為回文數(shù)。這種方法將數(shù)字分為左半部分和右半部分,然后遍歷兩部分進行比較,如果兩部分相同,則該數(shù)是回文數(shù)。
function isPalindrome(num) { if (num< 0) return false; if (num< 10) return true; var str = num.toString(); var left = 0; var right = str.length - 1; while (left< right) { if (str.charAt(left) !== str.charAt(right)) { return false; } left++; right--; } return true; } console.log(isPalindrome(121)); // true console.log(isPalindrome(123)); // false
上面的代碼首先進行一些基本的判斷,比如負數(shù)一定不是回文數(shù),個位數(shù)一定是回文數(shù)。接著使用字符串的 charAt() 方法獲取左右兩個位置上的字符,如果不相同則直接返回 false,否則繼續(xù)遍歷兩部分的對應字符。如果遍歷完成都沒有返回 false,則說明該數(shù)是回文數(shù)。
總的來說,在 JavaScript 中判斷一個數(shù)是否為回文數(shù)的方法有很多種,每一種方法都有自己的優(yōu)點和局限性。在實際開發(fā)中,我們要根據(jù)具體情況選擇最適合的判斷方法。