算法太差,中间几个都不会


给定一个 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 }

  今天就这么多,有时间再做一些

posted on 2018-08-30 16:53  会搔耳朵的猫  阅读(164)  评论(0编辑  收藏  举报