老肝哥-菜鸟Java的LeetCode历程,第七题:Reverse Integer,朝远大目标前进!

您最亲爱的老肝哥上线了

今天老肝哥想延续昨日热情,继续刷刷LeetCode题目,想当然尔老肝哥这种菜鸡都只能从Easy的题目解起
老肝哥看了下题目,只能以老肝哥直觉的方式解,跟网路上那些做法有很大的不同
果然菜鸡与高手之间的差距非常大啊!

虽然最后还是有解出来就是了

7. Reverse Integer

题目描述为下:
Example 1:

Input: x = 123
Output: 321
Example 2:

Input: x = -123
Output: -321

老肝哥的理解为:把里面的数字对调,有负数加上负数,就这样

解答如下:

class Solution {    public int reverse(int x) {               try {        int tmpX = Math.abs(x);        String tmpStr = String.valueOf(tmpX);        char[] tmpC = tmpStr.toCharArray();        StringBuffer sb = new StringBuffer();                for(int i = (tmpC.length)-1;i>=0;i--){        sb.append(tmpC[i]);        }        String str=sb.toString();        if(x>0){        int num=Integer.parseInt(str);        x = num;        return x;        }else if(x<0) {        int num=Integer.parseInt(str);        x = -num;        return x;        }}catch(Exception e) {        return 0;}return 0;                 }}

解释如下:

老肝哥没有上网查解答以前,思路就是把数字一个一个反着取出,再转成数字,那就符合题目要求,
纵然前面有0,使用 Integer.parseInt 后,这个问题也能消除

首先使用Math.abs取回绝对值(去除负值),再来使用String.valueOf把数字转成字串
字串类型内有个方法为toCharArray即取回char[],
后面跑个forloop反着append进StringBuffer内,
最后判断小于0加上『 - 』号回传,即完成题目

但真正困扰老肝哥的问题是,少了try catch区块,LeetCode会丢 9646324351 进去测试,
题目开头也有提到 『超出有符号的32位整数範围,则返回。[-231, 231 - 1]0』

超出int的範围了,老肝哥又老又肝又粗心,没注意到这行,开心的写完,submit后难受的看着错误提示

各位小伙伴切记呀~!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章