您最亲爱的老肝哥上线了
今天老肝哥想延续昨日热情,继续刷刷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后难受的看着错误提示
各位小伙伴切记呀~!