最近在别人的推荐下刚开始接触LeetCode,一个非常不错的在线编程刷题网站,java小白目前还在刷简单的算法题,不过挺有意思的。昨天碰到一个反向整数算法题,想了好久没写出答案,在网上搜了答案,贴在这里,我是觉得算法题跟做数学很相似,苦苦解不开一个题可能是我们的思维方式出现了问题,通过看别人写的代码,仔细分析别人的思维逻辑,反思自己与别人解决问题逻辑上的差异,为什么别人可以想到这种解法,进而来提升自己的算法能力,越来越觉得编程是件有趣的事了。
题目如下:输入一个int 类型的整数,结果输出一个反向整数。
例如 输入1234,运行代码后得到结果4321.
或者输入 -1234, 输出-4321.
同时还要考虑到假定输入为32位有符号整数。 当反转的整数溢出时,你的函数应该返回0。
public class Solution {
public int reverse(int x) {
int y=0;
int n; //接收余数
while( x != 0){
n = x%10;
if (y > Integer.MAX_VALUE/10 || y < Integer.MIN_VALUE/10){ //如果反转后整数溢出,return 0.
return 0;
}
y = y*10 + n;
x /= 10;
}
return y;
}
}
希望对看到的同为java小白的朋友能有帮助,以后我还会把在LeetCode上刷到有意思的算法题贴出来分享。