JAVA算法:整数旋转(Rotate Integer)JAVA版本
给定一个整数,输出将其旋转后的结果。
解决这个问题需要注意思考几个特殊点:
1、给定的整数处理后超出整数的表示范围,溢出。
2、尾数有0的情况,例如:100,处理后的结果是什么?
3、程序中如何捕获异常。
算法分析(思路)
通过对数字模十取余得到它的最低位。其实本题考查的是整数相加的溢出处理,检查溢出有这么几种办法:
两个正数数相加得到负数,或者两个负数相加得到正数,但某些编译器溢出或优化的方式不一样
对于正数,如果最大整数减去一个数小于另一个数,或者对于负数,最小整数减去一个数大于另一个数,则溢出。这是用减法来避免加法的溢出。
使用long来保存可能溢出的结果,再与最大/最小整数相比较
算法设计
package com.bean.algorithm.basic;public class RotateInteger {public int reverse(int x) {long result = 0;int tmp = Math.abs(x);while(tmp>0){result *= 10;result += tmp % 10;if(result > Integer.MAX_VALUE){return 0;}