LeetCode7-整数反转

简介: LeetCode7-整数反转

题目



给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。


示例



示例 1:


输入: 123

输出: 321


示例 2:


输入: -123

输出: -321


示例 3:


输入: 120

输出: 21


注意:


假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。


代码



package com.leetcode.code;
/** 
* LeetCode7-整数反转
*
* 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 
* 
* 示例 1:
* 输入: 123 
* 输出: 321 
* 
*  示例 2: 
*  输入: -123 
* 输出: -321 
* 
* 示例 3:
* 输入: 120
* 输出: 21 
* 
* 注意: 
* 
* 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。 
* 请根据这个假设,如果反转后整数溢出那么就返回 0。 
*/
public class LeetCode7 {    
  public static int reverse(int x) {    
    if (x > Integer.MAX_VALUE || x < Integer.MIN_VALUE) {     
      return 0;   
    }       
    int abs = Math.abs(x), num = 0;    
    String str = new StringBuilder(String.valueOf(abs)).reverse().toString();  
    try {       
      num = Integer.parseInt(str);     
    } catch (NumberFormatException e) {    
        return 0;    
      }     
      return num = x > 0 ? num : -num;   
  }
    public static int reverse2(int x) {    
      long rs = 0;   
      while(x != 0){     
        rs = rs * 10 + x % 10;        
        x /= 10;     
      }   
      return (rs < Integer.MIN_VALUE || rs > Integer.MAX_VALUE) ? 0 : (int) rs;  
    }
    public static void main(String[] args) {   
      System.out.println(reverse(-12300));      
      System.out.println(reverse2(-12300));  
    }
}


小结



这道题还是蛮简单的,怎么通过率这么低呢。

虽然是简单,可以解出来。但你看第一种方法(我自己写的方法)和第二种方法,有什么差别呢?

我的耗时3ms,第二种只有1ms,,差了三倍的性能。

所以说,一个好的算法,简洁与高效。不能给出再多的评价了。

相关文章
|
22天前
|
存储
LeetCode整数反转
解决LeetCode上的整数反转问题的几种方法,包括错误的方法和优化后的解决方案,以及如何避免反转后的整数超出32位有符号整数范围的问题。
30 1
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
102 2
|
24天前
【LeetCode】整数翻转
【LeetCode】整数翻转
13 1
|
22天前
|
存储 C++
Leetcode第十二题(整数转罗马数字)
LeetCode第12题“整数转罗马数字”的解题方法,包括罗马数字的基本规则和特殊规则,以及如何使用C++实现整数到罗马数字的转换。
14 0
|
22天前
|
C++
Leetcode第十三题(罗马数字转整数)
这篇文章介绍了LeetCode第13题“罗马数字转整数”的解题方法,通过一个C++的类`Solution`中的`romanToInt`函数来实现,该函数使用哈希表和遍历字符串的方法,根据罗马数字的规则将输入的罗马数字字符串转换为对应的整数值。
44 0
|
22天前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
14 0
|
3月前
|
算法
LeetCode第12题目整数转罗马数字
该文章介绍了 LeetCode 第 12 题整数转罗马数字的解法,通过使用 TreeMap 按照整数从大到小排序,先使用大的罗马数字表示整数,再用小的,核心是先表示完大的罗马数字,想通此点该题较简单。
LeetCode第12题目整数转罗马数字
|
3月前
|
算法
LeetCode第8题字符串转换整数 (atoi)
该文章介绍了 LeetCode 第 8 题字符串转换整数 (atoi)的解法,需要对字符串进行格式解析与校验,去除前导空格和处理正负号,通过从高位到低位的计算方式将字符串转换为整数,并处理越界情况。同时总结了这几道题都需要对数字的表示有理解。
LeetCode第8题字符串转换整数 (atoi)
|
3月前
|
算法
LeetCode第7题整数反转
该文章介绍了 LeetCode 第 7 题整数反转的解法,通过除 10 取模和乘 10 累加的方式实现整数反转,同时注意边界情况的判断,并总结了通过举例推算发现规律的解题思路。
LeetCode第7题整数反转
|
3月前
|
算法
LeetCode第13题目罗马数字转整数
该文章介绍了 LeetCode 第 13 题罗马数字转整数的解法,通过从大到小解析罗马数字,根据罗马数字的特点,按照从大到小的顺序匹配罗马数字和整数的关系,从而解决该问题,同时强调要注意观察题目考查的知识点特征。