当前位置: 首页 > news >正文

翻转整数

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

原题

  Reverse digits of an integer.
  Example1: x = 123, return 321
  Example2: x = -123, return -321

题目大意

  输入一个整数对其进行翻转

解题思路

  通过求余数求商法进行操作。

代码实现

public class Solution {
    public int reverse(int x) {
        long tmp = x;
        // 防止结果溢出
        long result = 0;

        while (tmp != 0) {
            result = result * 10 + tmp % 10;
            tmp = tmp / 10;
        }

        // 溢出判断 
        if (result < Integer.MIN_VALUE || result > Integer.MAX_VALUE) {
            result = 0;
        }

        return (int) result;
    }
}

第一种方法:

[java] view plain copy

 

  1. /** 
  2.  * <pre> 
  3.  * 实现将整形数字反转 
  4.  * </pre> 
  5.  *  
  6.  * @param num 
  7.  *            要反转的数字 
  8.  * @return 反转后的数字 
  9.  */  
  10. public static int numReverse(int num) {  
  11.   
  12.     int modNum = 0;// 余数  
  13.     int result = 0;  
  14.   
  15.     while (num / 10 != 0) {// 当num为一位数时,跳出循环  
  16.   
  17.         modNum = num % 10;  
  18.         num = num / 10;  
  19.         result = result * 10 + modNum;  
  20.     }  
  21.   
  22.     return result * 10 + num;// 当num为一位数时,返回结果  
  23. }  

 

 

思路:

(1)这道算法题属于OJ中比较简单的题目。题意是将给定的整数逆序,但是涉及到几种特殊情况需要考虑。

(2)为了便于处理,将整数转为字符串。我们只需要遍历一次该字符串即可。

(3)在遍历的过程中,需要对正负数进行判断,当字符串长度大于0时,先取第一个字符进行判断,看其是否等于‘-’,如果相等

         就是负数,需要设置一个标志位。

(4)在继续遍历的过程中,只需判断字符是否为数字(显然都是),然后通过标志位判断正负后进行累加操作。

(5)需要注意的时,翻转后的的整数可能会超过int的最大值,为了防止越界,我们定义的sun的类型必须为long,这样当大于或

         者小于int的最大值和最小值时就返回0;其余情况直接将long强转为int,并返回结果。

(6)注意上述几个方面后,OJ通过肯定没问题。

 

算法实现代码如下所示(希望对你有所帮助,谢谢):

 

[java] view plain copy

 

  1. public static int reverse(int x) {  
  2.     String s = String.valueOf(x);  
  3.     long sum = 0;  
  4.     boolean isnegitive = false;  
  5.     for (int i = s.length()-1; i >=0 ; i--) {  
  6.         if(s.charAt(0)=='-'){  
  7.             isnegitive = true;  
  8.         }  
  9.           
  10.         if( Character.isDigit(s.charAt(i))){  
  11.             if(isnegitive){  
  12.                 sum = sum * 10 - Integer.parseInt(String.valueOf(s.charAt(i)));   
  13.             }else{  
  14.                 sum = sum * 10 + Integer.parseInt(String.valueOf(s.charAt(i)));  
  15.             }  
  16.         }  
  17.     }   
  18.        
  19.     if(sum>Integer.MAX_VALUE || sum<Integer.MIN_VALUE){  
  20.          return 0;  
  21.     }  
  22.        
  23.     return (int)sum;  

 

第二种方法:

[java] view plain copy

 

  1. /** 
  2.  * <pre> 
  3.  * 实现将整形数字反转 
  4.  * </pre> 
  5.  *  
  6.  * @param num 
  7.  *            要反转的数字 
  8.  * @return 反转后的数字 
  9.  */  
  10. public static int reverse(int num) {  
  11.   
  12.     StringBuffer sb = new StringBuffer();  
  13.     String str = sb.append(num).reverse().toString();  
  14.   
  15.     return Integer.parseInt(str);  

 

int BinaryReverseValue(int x)
{
 int y=0;
 int z;

 while(x!=0)
 {
  z=x%2;
  y=(y<<1)^z;
  x=x/2;
 }

 return y;
}

上面这个函数用来返回输入数的二进制的翻转值

 

转载于:https://my.oschina.net/u/2822116/blog/801420

相关文章:

  • mysql执行insert后获得主键
  • 1.Ext JS 建立web开发工程
  • Input path does not exist: file:/.......
  • Linux mysql常用操作命令
  • linux 监控文件夹
  • Unity 脚本生命周期流程图
  • oracle 表移动表空间
  • Sublime轻量级编辑器
  • JavaBean组件的基本使用-语法
  • python生成伪数据
  • 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案
  • 解决服务器上部署PHP程序异常
  • 史上最全的ASP.NET MVC路由配置
  • jemalloc在linux上从安装到使用
  • Android随记
  • Android优雅地处理按钮重复点击
  • Angular4 模板式表单用法以及验证
  • Apache的基本使用
  • CAP 一致性协议及应用解析
  • CentOS6 编译安装 redis-3.2.3
  • ESLint简单操作
  • LeetCode18.四数之和 JavaScript
  • Octave 入门
  • PHP变量
  • STAR法则
  • Vue2.0 实现互斥
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 第2章 网络文档
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 深度学习中的信息论知识详解
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 写代码的正确姿势
  • 学习使用ExpressJS 4.0中的新Router
  • 应用生命周期终极 DevOps 工具包
  • 积累各种好的链接
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # 达梦数据库知识点
  • # 透过事物看本质的能力怎么培养?
  • #include
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (LeetCode) T14. Longest Common Prefix
  • (二)PySpark3:SparkSQL编程
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)http-server应用
  • (转)程序员技术练级攻略
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET 动态调用WebService + WSE + UsernameToken