首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【打卡贴】(No.007)反转整数

【打卡贴】(No.007)反转整数

作者头像
PM小王
发布2019-07-01 14:58:55
3160
发布2019-07-01 14:58:55
举报

NO.7 反转整数

原题:

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例 1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

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


这个题其实是16年网易秋招的面试编程题,附上原题

如下是16年网易秋招的笔试编程题

对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:

如果 X = 123,则rev(X) = 321; 如果 X = 100,则rev(X) = 1. 现在给出整数x和y,要求rev(rev(x) + rev(y))为多少?

输入描述:
输入为一行,x、y(1 ≤ x、y ≤ 1000),以空格隔开。
输出描述:
输出rev(rev(x) + rev(y))的值
输入例子:
123 100

刚看到题首先想到的是利用切片得到答案,利用R = X[::-1]这种方法对X进行一个反转复制的操作。不得不说这是一波骚操作。

class Solution:
    def reverse(self, x):
        flag = 1
        if x < 0:
            flag = -1
            x = -x
        R = str(x)[::-1]
        R = int(R)
        if R> 2147483647 or R < -2147483648:
            R = 0
        return R*flag

方法二是对输入数字进行乘除和取余运算,并把输出值乘以10后与每次取余的结果相加,直到原数据变为0。同时题目明确提出要对输出的整数进行限制,所以在返回时需要加上判断条件。

class Solution:
    def reverse(self, x):
        # 返回值
        R = 0
        # 标记输入值的正负
        flag = 1 
        if x<0:
            x = abs(x)
            # 输入是负数
            flag = -1
        while x != 0:
            R = R*10+x%10
            x = x//10
            # 判断是否越界
        if -2147483647<R< 2147483648:
            return R*flag
        else:
            return 0
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小王 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 输入描述:
  • 输出描述:
  • 输入例子:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档