整數反轉
一個帶符號的32位整數,將他順序顛倒后求出。輸入 -123 ; 輸出-321
var reverse = function(x){
/*將整型變量轉化為字符串*/
var string_x = x+"";
if(x<0)
{
/*replace函數用于去除符號,split用于轉化數組,reverse進行數組倒序,join再變?yōu)樽址?/
var new_string_x = string_x.replace("-","").split("").reverse().join("");
var number = parseInt("-"+new_string_x);
/*Math.abs為絕對值*/
if(Math.abs(number)>2147483648) return 0;
else return number;
}
else
{
var new_string_x = string_x.split("").reverse().join("");
var number = parseInt(new_string_x);
if(number>=2147483648) return 0;
else return number;
}
};
回文數
判斷一個整數是否是回文數?;匚臄凳侵刚颍◤淖笙蛴遥┖偷剐颍◤挠蚁蜃螅┳x都是一樣的整數。
示例1:
121
true
示例2:
-11 10
false
一: 轉換字符串方法
與上面例題類似先轉化為字符串,再數組再對比最后得出結論便可
二: 數學方法
思路
- 如果值為負或者最后一位是0直接false
- 假設該數為num1,對num1進行10的取模運算,然后將取得的數值每一次都向前一位移動(因為回文數要求倒序,最后一位即回文的最高位)
- 在進行取模之后對x進行縮減,注意在js中如果直接進行 / 的運算還將存在小數,因此得采取parseInt()對它進行整型化處理。
- 將取模與做除法運算的兩個結果進行對比。如果取模值>除法值即表明已經過半(回文數中間值)
- 最后如果為奇數則要把取模值再做一次除法運算再進行比較即可
代碼
var isPalindrome = function(x) {
if(x<0||(x%10 == 0 && x!=0)) return false;
var renum=0;
while(x>renum)
{
renum = renum*10+x%10;
x = parseInt(x/10);
}
return x == renum || x == parseInt(renum/10);
};