关闭

反转整数

542人阅读 评论(0) 收藏 举报
分类:

题目描述:将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。

样例:给定 x = 123,返回 321;给定 x = -123,返回 -321

从末尾起,依次输出整数的每个位,组成一个新的整数——这就是这道题所需要做的工作。

所以我们可以采用经典的”先取余,再求商“的循环,依次输出数字,再将这些数字组合起来。需要注意的是整数溢出的问题,32位int型的整数取值范围是:-2147483648(-2^31)~2147483647(2^31 - 1). 考虑到给出的整数有可能是负数,而对负数做取余,结果并不是我们想要的最后一位数字(例如:-123 % 10 = 7)

所以,可以先对整数求取绝对值,再对这个绝对值处理,最后输出结果时,若整数一开始就是负数,则再加个“-”号即可。

代码如下:

class Solution:
    # @param {int} n the integer to be reversed
    # @return {int} the reversed integer
    def reverseInteger(self, n):
        max_int = 2147483647
        temp = abs(n)
        result = 0
        while temp > 0:
            result *= 10
            result += temp % 10
            if result > max_int:
                return 0
            temp = temp // 10
        return result if n >= 0 else -result
        # Write your code here


这里顺带说一下,为什么整数的取值范围是-2147483648(-2^31)~2147483647(2^31 - 1),首先,可以确定的是,32位的二进制字符串可以表示的数一共有2^32个,除去整数0,因为是要表达有符号的整数,所以正负数应该平分剩下的(2^32 - 1)个“名额”,无奈是个奇数,所以只能一个占2^31 - 1个,另一个占2^31个。又因为负数的二进制表示是相应的正数二进制先取反码,再取补码,为了使负数的二进制形式不溢出,就只能(-2^31)~(2^31 - 1)了。试想,如果-(2^31 - 1)和2^31同时存在,则-(2^31 - 1)的码字为(1000...000),而2^31的码字也是(1000...000),(求取负数的二进制表示,详见:点击打开链接)所以范围只能是:-2147483648(-2^31)~2147483647(2^31 - 1)

0
0
查看评论

LeetCode算法题:JAVA实现整数反转reverse integer

题目来源:LeetCode Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 1、首先我想到的是最笨的方法 思路:将整数转为数组,通过数组的角标来实现反转,再...
  • sinat_36713319
  • sinat_36713319
  • 2016-12-21 21:07
  • 1117

【LeetCode】- Reverse Integer(将一个整数反转)

[ 问题: ] Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 题解:给定一个整数,将这个整数的数字旋转位置。 ...
  • zdp072
  • zdp072
  • 2014-01-05 22:11
  • 3806

[Leetcode #7]Reverse Integer整数反转、逆向打印整数

原题地址:https://leetcode.com/problems/reverse-integer/ 题目要求是:反转一个整数,例如: x = 123,返回321 x = -123, 返回-321 题目比较简单,需要注意的一点是要判断是否溢出,因此需要用long类型保存结果。 public c...
  • turkeycock1
  • turkeycock1
  • 2016-08-23 09:27
  • 258

整数实现翻转---java实现

当时面试的时候,给出了一道题目,就是让整数进行翻转,比如给出整数123,然后翻转成321,下面是代码实现 public class Solution {   public int reverse(int x) {   long tmp = x; // 防止结果溢出 &...
  • Anny_Lin
  • Anny_Lin
  • 2015-07-18 13:00
  • 1782

整数反转代码

int num_reverse(int num) { int flag=1,modnum,result=0; //处理符号位,方便处理负数 if(num<0) {flag=-flag;num=-num;} while(num/10!=0)...
  • s1070
  • s1070
  • 2015-10-18 23:03
  • 396

LintCode python 小白-简单题-413-反转整数

题目:将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。样例 给定 x = 123,返回 321 给定 x = -123,返回 -321
  • xiongxu3381
  • xiongxu3381
  • 2017-07-29 11:26
  • 875

C++ - 整数反转

题目很简单,完成函数reverse,要求实现把给定的一个整数反转。 举两个例子如下:x = 123,return 321;x = -123,return -321。 #include int reverse(int x) { // The result integer to be return...
  • chimomo
  • chimomo
  • 2013-12-11 14:34
  • 20211

【leetcode】Reverse Integer整数反转----Java代码实现

用Java实现反转整数 Reverse Integer
  • yxb09501bin
  • yxb09501bin
  • 2016-11-17 17:00
  • 1944

【C/C++】实现将一个整数反转

实现将一个整数反转
  • linchaolong
  • linchaolong
  • 2015-02-08 19:53
  • 4031

反转一个整数 递归/原创

#include int MaxPower(int x){ if(x/10 == 0)  return 1; else  return 10 * MaxPower(x / 10);}int Convert(int x){ if(x...
  • leechiyang
  • leechiyang
  • 2005-12-06 17:23
  • 727
    个人资料
    • 访问:206041次
    • 积分:4110
    • 等级:
    • 排名:第8935名
    • 原创:212篇
    • 转载:0篇
    • 译文:0篇
    • 评论:39条
    博客专栏
    文章分类
    最新评论