【记录帖】从零打卡刷Leetcode——No.007

写在前边:

小詹此记录贴的读者越来越少了,也许是小詹总结的不够好欢迎留言区提出宝贵的意见!也欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!


No.7 反转整数

原题:(有中文网站,就不去读英语啦哈哈)

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

例如:

输入: 123输出: 321

题目大意:注意题目中小詹标蓝的部分:32位有符号整数!说明有正负!如果超过32位范围就输出0。这一题比较简单,就用较为简单的篇幅进行讲解如下。


开始的开始,我们都是孩子!一开始想到了本科学c的时候遇到过类似的,第一反应是通过除法取商和取模运算进行反转,即依次获取每一个位置的数,然后反转再输出。这里值得一提的是不需要像小詹最初所想的进行列表化再反转处理。按照下列代码逻辑,已经实现了反转。

class Solution:
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        #定义一个空字符串,思路是将数字字符化通过以下计算反转,
        #转换成字符串后反转转换成数字
        s = ''
        while x//10 != 0:
            num = x % 10
            s = s + str(num)
            x //= 10
        s = s + str(x) #针对最高位或者本身就是个位数的特殊情况  
        return int(s)

然而,执行只能通过部分样例,检查发现有这样几种错误:

  1. 未考虑到正负符号
  2. 为考虑超出32位
  3. 未考虑时间限制

这题很简单,完善下逻辑肯定没问题,但是时间很容易超出限制。但是!我们是用啥?用的是python啊,就像之前打卡群里小伙伴说的python内置函数都很牛逼。这题就可以有python的独特方法实现噢,比如列表的反转方法有哪些?自行温习,这里小詹跟大家说两种常用的:

  1. list.reverse()方法
  2. 字符串切片方法:res = s[::-1]

于是完善上边的逻辑漏洞,考虑到32位限制和正负符号。得到炒鸡简单的代码如下:

class Solution:
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        #先记录正负
        sign = [1,-1][x < 0]
        #利用正负反转后符号不变,并利用绝对值函数进行反转,添加原有符号即可
        rst = sign * int(str(abs(x))[::-1])
        #返回反转值,超出32位为0
        return rst if -(2**31)-1 < rst < 2**31 else 0

这题思路简单,粗暴有力,尤其是利用python来实现简直就像是在作弊~~~~

往期推荐

【记录帖】(No.006)从零打卡刷Leetcode

【记录帖】(No.005)从零打卡刷Leetcode

【记录帖】(No.004)从零打卡刷Leetcode

【记录帖】(No.003)从零打卡刷Leetcode

【记录帖】(No.002)从零打卡刷Leetcode

【记录帖】(No.001)从零打卡刷Leetcode

原文发布于微信公众号 - 小詹学Python(xiaoxiaozhantongxue)

原文发表时间:2018-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

学点编码知识又不会死:Unicode的流言终结者和编码大揭秘

如果你是一个生活在2003年的程序员,却不了解字符、字符集、编码和Unicode这些基础知识。那你可要小心了,要是被我抓到你,我会让你在潜水艇里剥六个月洋葱来惩...

196100
来自专栏数说工作室

class 类—老司机的必修课 | 统计师的Python日记 第11课

本文是【统计师的Python日记】第11天的日记 回顾一下: 第1天学习了Python的基本页面、操作,以及几种主要的容器类型。 第2天学习了python的函...

382100
来自专栏xingoo, 一个梦想做发明家的程序员

Java程序员的日常—— 基于类的策略模式、List<?>与List、泛型编译警告、同比和环比

早晨起得太早,昨晚睡得太晚,一天都迷迷糊糊的。中午虽然睡了半个小时,可是依然没有缓过来。整个下午都在混沌中....不过今天下载了一款手游——《剑侠情缘》,感觉...

19670
来自专栏苦逼的码农

从零打卡leetcode之day 1--两数之和

不过心里才两个循环时间复杂度可是n的平方,心想肯定得超时,不过还是大胆提交一下提交,呵呵,居然通过了。。。。

13410
来自专栏学习力

《Java从入门到放弃》JavaSE入门篇:面向对象概念(入门版)

17350
来自专栏编程

Python学习笔记1——斐波那契数列

这是一个高中同学问我的问题,本来是用C来写的,正好正在学Python,就用Python重写了一遍当作练习。 下面是题目要求: ? ? 一道很简单的题目,但有些细...

299100
来自专栏Python小屋

微课系列(四):Python中map对象的几种用法和注意事项

在Python中,map、filter、enumerate、zip、reversed等对象除了惰性求值之外,还有个共同的特点是“其中的元素只能使用一次”,这一点...

9620
来自专栏机器学习算法工程师

一道网易笔试题引发的血案……

作者:柳行刚 编辑:黄俊嘉 网易的2016年笔试题,题目经典。 所以特地找来给各位有兴趣的童鞋看看, 有详细的解题思路以及代码喔~ 各位,请看题! 题目描述: ...

482120
来自专栏WeaponZhi

轻松初探 Python 篇(五)—dict 和 set 知识汇总

这是「AI 学习之路」的第 5 篇,「Python 学习」的第 5 篇 dict dict 是 Python 内置的字典类型,熟悉 Java 的同学可以把它类比...

31890
来自专栏青玉伏案

代码重构(五):继承关系重构规则

陆陆续续的发表了多篇关于重构的文章了,还是那句话,重构是一个项目迭代开发中必不可少的一个阶段。其实重构伴随着你的项目的整个阶段。在前几篇关于重构的文章中我们谈到...

22260

扫码关注云+社区

领取腾讯云代金券