整数反转
一个带符号的32位整数,将他顺序颠倒后求出。输入 -123 ; 输出-321
var reverse = function(x){
/*将整型变量转化为字符串*/
var string_x = x+"";
if(x<0)
{
/*replace函数用于去除符号,split用于转化数组,reverse进行数组倒序,join再变为字符串*/
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;
}
};
回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例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);
};