资讯专栏INFORMATION COLUMN

【LeetCode Easy】007 Reverse Integer

Sourcelink / 2661人阅读

摘要:第一时间想到这是经典的取模取余运算,但是写的过程中遇到了很多问题这么简单一题基础做法取一个整数的最后一位数字只要把这个整数就可以,要取除最后一位数字之外的其它数字只要是没有长度函数的,需要转化成才能使用长度函数用这个方法最大的难点在

Easy 007 Reverse Integer Description:
Given a 32-bit signed integer, reverse digits of an integer.
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−2^31,  2^31 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
==Example==
123→321 -123→-321 120→21
My Solution:

第一时间想到这是经典的取模取余运算,但是写的过程中遇到了很多问题QAQ(这么简单一题

基础做法:取一个整数的最后一位数字只要把这个整数 % 10就可以,要取除最后一位数字之外的其它数字只要 / 10

int是没有长度函数的,需要转化成String才能使用长度函数

用这个方法最大的难点在于用int类型时处理溢出问题,原本没有溢出的数字在进行翻转时很有可能溢出,最合适的方法是在处理过程中进行预判

假设翻转过程的中间值用res来保存,每次取下来的那个数字用pop来保存,overflow = 2147483646,underFlow = -2147483647

已知当res * 10 + pop 会引起溢出时,res必定是 ≥ (max / 10)或 ≤ (min / 10)的,其中相等时对pop有要求

根据上述条件在翻转时进行溢出预判

Java代码:

  public static int reverse(int x) {
      int overFlow = (int)Math.pow(2,31) -1;     //overFlow = 2147483646
      int underFlow = 0 - (int)Math.pow(2,31);   //underFlow = -2147483647
      int pop = 0;
      int result = 0;

      while(x != 0){
          pop = x % 10;
          if((result>overFlow/10) || (result==overFlow/10 && pop>7))
              return 0;
          if((result

Fast Solution:

题目中要求的溢出条件其实是针对int型数据的,这题用Java来写的话其实可以用long类型

Java代码:

 public int reverse(int x) {
     long res = 0;   //此处用了long
     while (x != 0) {
         res = res * 10 + x % 10;
         x = x / 10;
     }
     return (int)res == res ? (int)res : 0;   
 }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74237.html

相关文章

  • 前端 | 每天一个 LeetCode

    摘要:在线网站地址我的微信公众号完整题目列表从年月日起,每天更新一题,顺序从易到难,目前已更新个题。这是项目地址欢迎一起交流学习。 这篇文章记录我练习的 LeetCode 题目,语言 JavaScript。 在线网站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公众号: showImg(htt...

    张汉庆 评论0 收藏0
  • LeetCode - 007 - 整数反转(reverse-integer

    摘要:详细介绍将其他值转成数字值。此方法更改数组的长度。详细介绍解题思路首先,将传入的数字转换成字符串,并分割成数组。本许可协议授权之外的使用权限可以从处获得。 Create by jsliang on 2019-05-19 09:42:39 Recently revised in 2019-05-19 16:08:24 Hello 小伙伴们,如果觉得本文还不错,记得给个 star , 小伙伴们...

    venmos 评论0 收藏0
  • leetcode-Easy-第2期:Reverse Interger

    摘要:题目反转整数反转后的整数如果不在范围则返回简单解法耗时解法二获取余数,即从右边第一位开始的数字保留整数部分解题思路跳出循环,判断是否在最大值和最小值之间知识点复习小于的最大整数返回四舍五入返回的整数部分,包含正负号 题目 Given a 32-bit signed integer, reverse digits of an integer. 反转整数反转后的整数如果不在[−2^31, ...

    Tecode 评论0 收藏0
  • leetcode部分题目答案之JavaScript版

    摘要:自己没事刷的一些的题目,若有更好的解法,希望能够一起探讨项目地址 自己没事刷的一些LeetCode的题目,若有更好的解法,希望能够一起探讨 Number Problem Solution Difficulty 204 Count Primes JavaScript Easy 202 Happy Number JavaScript Easy 190 Reverse Bi...

    alphahans 评论0 收藏0
  • Leetcode 7 Reverse Integer 倒序整数

    摘要:原题目为难度此题让我们输出给定一个整数的倒序数比如倒序为倒序为但是如果倒序的过程中发生整型溢出我们就输出倒序不复杂关键在于如何判定将要溢出最终的程序如下其中是获取的个位数字判定下一步是否将要溢出使用 原题目为: Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -3...

    LoftySoul 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<