整数反转 No.7
题目描述:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ea9067de94e8d285f086ac47a456bf41.png)
第一想法:
第一反应转字符串进行切片反转再转int类型
class Solution:
def reverse(self, x: int) -> int:
if x<0 : #逆序step=-1.区间为 (stop,start] 舍去第一位的符号,且为开区间所以stop=0
y=-1*(int)(str(x)[:0:-1])
else:
y=(int)(str(x)[::-1])
if y < (-2)**31 or y > 2**31:#处理越界
return 0
else:
return y
第二想法:
- 基于本科学过的知识,可以使用操作(取模%和整除\ 实现取位) +数据结构(栈实现反向输出)
New skill :
- 依据Day1 学的逆序,想用reverse()函数,但是必须是list类型,万能的Python不行,我脑子也不够清醒,这哪个语言好像都不行,还是第一反应靠谱。
x_str=list(12)
---------------------------------------------------------------------------
TypeError: 'int' object is not iterable
Solution_online(网上解法):
- 正负位设flag,越界设定上下线
class Solution(object):
def reverse(self, x):
maxi=2147483647
mini=-2147483648
res=0
judge=True
if x<0:
x=-x
judge=False
while x!=0:
res=res*10+x%10
x=int(x/10)
if judge==False: res=-res
if res>maxi or res<mini : return 0
else : return res
作者:user9429s
链接:https://leetcode-cn.com/problems/two-sum/solution/che-pythonjie-fa-by-user9429s/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 官网正解_version:C and Java–使用数学方法+考虑越界
本科C语言练习记得有个这个题目,即使用取模和除法来得到各个位上的数字
我们想重复“弹出”x最后一位数字,并将它“推入”到rev 的后面。最后,rev 将与 x相反
要在没有辅助堆栈 / 数组的帮助下 “弹出” 和 “推入” 数字,我们可以使用数学方法。
//pop operation: “弹出”
pop = x % 10;
x /= 10;
//push operation: “推入”
temp = rev * 10 + pop;
rev = temp; //作者:LeetCode
重做:第二种想法就是官网的处理,由于Python语法还不熟,应该有专门的结构体
O(∩_∩)O哈哈哈~C语言基础暴露出来了,时间匆忙,一有空我就回来更
所以道歉一哈:
Functional language about apology
- Silly me.
- Don’t hold this against me
- Be happy to take the blame, if …
- I don’t know what came over me //我不知道自己是怎么回事
- I take full responsibility for …
我是基础非常差的up主,时间不多,思想简单,个人随笔,勿喷