每日两道算法题 - 整数旋转

问题

给定一个整数,将整数进行反转并输出,如果越界则返回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

你可能感兴趣的:(每日两道算法题 - 整数旋转)