每日两道算法题 - 整数旋转
2021-12-18 本文已影响0人
辉_ace
问题
给定一个整数,将整数进行反转并输出,如果越界则返回0
输入: 123
输出: 321
思路
从低位逐一向上,获取每一位的值(从后往前获取)。
当前结果乘以10(让结果值每次向前进一位) 加上 当前获取的值,从而得到每次操作的结果值。
判断当前操作是否越界
将当前临时变量结果 赋值给 结果。
初始值向前进一位(初始值/10)
image.png
实现
public class ReverseIntNum {
public static void main(String[] args) {
int number = 123;
int result = reverseIntNum(number);
System.out.println(result);
}
private static int reverseIntNum(int number) {
//定义最终结果
int result = 0;//第一次 0->3 第二次 3->32
while (number != 0){
//获取当前要操作的值(从后向前获取)//第一次:3 第二次:2 第三次:1
int temp = number % 10;
//临时变量,用于存储当前操作的结果值
int currentResult = result*10+temp;//第一次 3 第二次 32 第三次 321
//判断是否越界, 当前操作的结果如果不相等,则越界
if ((currentResult-temp)/10 != result){
return 0;
}
//临时变量 赋值给 最终结果
result = currentResult; //第一次 3 第二次 32 第三次 321
//被操作值向前进一位
number = number/10;//第一次 12 第二次 1 第三次 0
}
return result;
}
}
image.png