算法太差,中间几个都不会
给定一个 32 位有符号整数,将整数中的数字进行反转。
我刚开始的想法有些太简单了,直接把数字转成字符串,然后把字符串再转成数组,用数组中的方法反转后再转成字符串,最后转成数字就可以了. 无视了负数和注意里要求的32位整型数字,随后加了个判断条件,在是负数的情况下,先取绝对值然后拆分翻转,最后在转成数字时添加负号. 对于超出整型范围的数字,在最后做判断,不在区间内的返回0即可,有个小插曲是,刚开始判断了输入的值,导致不能正确运行,随后及时发现并且改正
1 function reverse(x) { 2 var str = x + ''; 3 var arr = null; 4 var num = null; 5 //对于正数,采取常规方法即可得到 6 if (x >= 0) { 7 //拆分 8 arr = str.split(''); 9 //翻转 10 arr = arr.reverse(); 11 //拼接 12 str = arr.join(''); 13 //转成数字 14 num = Number(str); 15 } else if (x < 0) { 16 //先不对负号做处理,对数字取绝对值 17 str = Math.abs(str) + ''; 18 arr = str.split(''); 19 arr = arr.reverse(); 20 str = arr.join(''); 21 //在转成数字时,添加负号 22 num = -Number(str); 23 } 24 //对于不在32位整型范围的返回0 25 if (num < Math.pow(-2,31) || num > Math.pow(2, 31)-1) { 26 return 0; 27 } 28 return num; 29 }
今天就这么多,有时间再做一些