前话
今天开始励志刷一下leetcode上面的题目(还好这个网站没被TG和谐)。从easy的开始,数一下差不多有40道,争取两个月搞定。
题目
没想到做的第一道题目,虽然看似简单,却费了很大周折。
题目如下:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
刚看到这道题,首先蹦出的想法是把整数转换为字符串,然后前后位置换下再转回int型,实事证明这样是不可取的,因为当输入的int型数字很大的时候,比如412851289525983,就会产生溢出,这样在使用Integer.parseInt这种函数的时候会报错,正确的做法是对数字进行int操作,利用取10的余数获得每位数字。下面展示下,错误答案和正确答案。
代码
1.正确解
public class Solution { public int reverse(int x) { int sum = 0; while (Math.abs(x) != 0) { if(Math.abs(sum) > Integer.MAX_VALUE / 10) { return 0; } sum = sum * 10 + x % 10; x = x / 10; } return sum; } }
2.错误解
public class Solution { public int reverse(int x) { if(Math.abs(x)>100){ return 0; } else{ String x_str=Integer.toString(x); char[] x_char = x_str.toCharArray(); String x_reverse_str=""; //System.out.print(Character.isDigit(x_char[0])); if(Character.isDigit(x_char[0])){ for(int i=(x_str.length()-1);i>=0;i--){ x_reverse_str+=x_char[i]; } } else{ x_reverse_str+=x_char[0]; for(int i=(x_str.length()-1);i>=1;i--){ x_reverse_str+=x_char[i]; } } return Integer.parseInt(x_reverse_str);} } }
代码下载:https://github.com/jimenbian/GarvinLeetCode
/********************************
* 本文来自博客 “李博Garvin“
* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/
时间: 2024-10-15 16:56:24