let number = 12345
期待输出结果: 54321
方法一:
function reverseNumber(number){
let _num = String(number).split('')
let _result= [];
let _len = _num.length;
for(let i =0; i< _num.length; i++){
_result[i] = _num[ _len - 1- i ];
}
return Number(_result.join(''));
}
reverseNumber(number) //54321
时间复杂度: O(n)
空间复杂度: O(n)
方法二:
function reverseNumber(number){
let _result = [];
let _num;
while( number > 0 ){
_num = number % 10;
_result.push(_num);
number = parseInt( number / 10 )
}
return Number( _result.join(''));}
reverseNumber(number); //54321
时间复杂度: O(n)
空间复杂度: O(n)
方法三:
function reverseNumber(number){
let _num = String(number);
let _result = '';
for( let i = _num.length -1; i >= 0; i-- ){
_result += _num.charAt(i)
}
return Number(_result)
}
reverseNumber(number); //54321
时间复杂度: O(n)
方法四:
function reverseNumber(number){
let _num = String(number).split('')
_num = _num .reduce( (x ,y ) => `${y}${x}` )
return Number(_num )
}
reverseNumber(number); //54321
时间复杂度: O(n)
空间复杂度: O(n)
方法五:
function reverseNumber(number){
let _num = String(number).split('');
return Number(_num.reverse().join(''));
}
reverseNumber(number); //54321
Tips:
- 大部分思路都是将数字变成字符串处理。最后需要将字符串转成数字,用Number or ParseInt()都可以。但是当数字最后一位为0的时候,逆序并转成数字之后0会被抹掉。
- 关于parseInt
- 使用ParseInt(number,10) 默认按十进制处理。
- 如果前缀为0,则js会把数值常量解释为八进制,如果前缀为0和‘x’,则解释为十六进制数。
parseInt(12345) //12345 10进制
parseInt(012345) //5349 ===>parseInt(12345,8)
parseInt(012345,8) //348 ===>parseInt(parseInt(12345,8),8)