美文网首页
每日两道算法题 - 整数旋转

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

作者: 辉_ace | 来源:发表于2021-12-18 21:26 被阅读0次

    问题

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

    相关文章

      网友评论

          本文标题:每日两道算法题 - 整数旋转

          本文链接:https://www.haomeiwen.com/subject/yuzgfrtx.html