博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA算法:整数旋转(Rotate Integer)JAVA版本
阅读量:4039 次
发布时间:2019-05-24

本文共 1196 字,大约阅读时间需要 3 分钟。

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;            }            tmp /= 10;        }        return (int)(x>=0?result:-result);    }	public static void main(String[] args) {		// TODO Auto-generated method stub		RotateInteger rotateInteger=new RotateInteger();				int x=-321;		int ANSWER = rotateInteger.reverse(x);		System.out.println("ANSWER = "+ANSWER);	}}

程序运行结果:

ANSWER = -123

另外一种JAVA算法设计:

public int reverse(int x) {		long sum = 0;		while (x != 0) {			sum = sum * 10;			sum += x % 10;			x = x / 10;		}		if (sum > Integer.MAX_VALUE || sum < Integer.MIN_VALUE) {			return 0;		}		return (int) sum;}

程序运行结果相同。

转载地址:http://jitdi.baihongyu.com/

你可能感兴趣的文章
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
自然计算时间复杂度杂谈
查看>>
当前主要目标和工作
查看>>
使用 Springboot 对 Kettle 进行调度开发
查看>>
如何优雅的编程,lombok你怎么这么好用
查看>>
一文看清HBase的使用场景
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>