初级算法探索——字符串篇(二)
程序员文章站
2022-05-01 14:27:02
...
问题:颠倒整数
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
js解决办法:
/**
* @param {number} x
* @return {number}
*/
// 思路:使用上一个反转字符串的思想,先根据整数正负转化成字符串,然后字符串翻转
var reverse = function(x) {
var str,num;
if (x >= 0) {
str = x.toString();
num = parseInt(reverseString(str));
} else {
str = Math.abs(x).toString();
num = -parseInt(reverseString(str));
}
if (num < -Math.pow(2,31) || num > Math.pow(2,31)-1) {
return 0;
}
return num;
};
var reverseString = function(s) {
if (s.length == 0 || s.length == 1) {
return s;
}
var newStr = "";
if (s.length%2 == 1) {
var strHead = reverseString(s.slice(0, (s.length-1)/2));
var strEnd = reverseString(s.slice((s.length-1)/2+1));
newStr = strEnd+s.charAt((s.length-1)/2)+strHead;
} else {
var strHead = reverseString(s.slice(0, s.length/2));
var strEnd = reverseString(s.slice(s.length/2));
newStr = strEnd+strHead;
}
return newStr;
};
运行结果截图:
执行耗时: