leetcode 7 easy的难度但是还是再次的提醒了我 math的重要性
程序员文章站
2022-05-23 11:01:53
...
目的为了自己再次回顾
题目要求:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
我刚开始的解决办法:也是我经常用到的方法,string的小白
public int reverse(int x) {
int ret = 0;
int tag = 0;
String str = Integer.toString(x);
if (str.startsWith("-")) {
str = str.substring(1);
tag = -1;
System.out.println(str);
}
char[] array = str.toCharArray();
int l = array.length - 1;
for (int i = 0; i <= l / 2; i++) {
char t = array[l - i];
array[l - i] = array[i];
array[i] = t;
}
if (tag < 0) {
try{
ret = -Integer.parseInt(String.valueOf(array));
}catch(Exception e){
ret=0;
}
} else {
try{
ret = Integer.parseInt(String.valueOf(array));
}catch(Exception e){
ret=0;
}
}
return ret;
}
这种解决办法,明显的复杂了,那么接下来显示数学的reverse 方法,既求余数,把余数放在前面,其实也间接地说明了,我当时看到题并没有想到数学方法,同时再次的用到了,在处理越界的问题上除法比乘法的优点
public int reverse(int x) {
int ret = 0;
while(x!=0){
if(ret>(Integer.MAX_VALUE/10)||ret<(Integer.MIN_VALUE/10)){
ret=0;
break;
}
ret=ret*10+x%10;//自己总是记不住
x=x/10;
}
return ret;
}
上一篇: Scrapy分布式爬虫打造搜索引擎-(六)scrapy进阶开发
下一篇: 数据结构广义表练习