给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入:123输出:321
示例 2:
输入:-123输出:-321
示例 3:
输入:120输出:21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
读题!!!
给一个整数,返归这个整数的倒序,
第一个问题,如何调换Int类型的某位数字的位置,int类型不能遍历,所以将它变成一个可以遍历的类型,最容易的就是str。直接str(x)
字符串类型没有任何问题。
然后就是反转字符串,刚看到别人用reverse()反转,试一下,果然报错,只能用于字符串!!!切记
用[::-1],没有任何问题,除了符号,那就做一个正负判断,
负数这里处理有一些麻烦,首先要保留负号,str(x)[0]
对后面的进行反转,这里应该是用[:0:-1],,而不是[1::-1](有些问题!!!!)
(有许多问题!!!!)
步长为正一直没有问题,为负数还是有许多问题。
如【::-1】是很正常的倒序操作,起始和结束这里默认是什么我研究两天了,写了删,删了写。
无论开头结尾是0或-4都达不到默认值的效果。
找了许多解释,终于找到答案,步长为起始负数默认为-1,终点索引值为负的长度减1。
起点包括该索引值,终点不包括该索引值,所以还要加减一。【-1,-len(a)-1:-1】
一个值对应两个索引值,这里0789,索引值为0 1 2 3 也可以为-1 -2 -3 -4。
所以当我们发现-1时少一位选用0结果还不是需要的。
讲解一下步长为负数的重点吧,步长为负数从右向左,所以先找右面的起始位,再找到左边的结束位,起始位包括该索引值,结束位不包括该索引值。任何值都有两个索引值,用正数负数的都可以,混着用没事,能看明白就行。
这里我们需要倒序舍去第一位,那就应该是【-1:-len(a):-1】
这里-1表示从最后一位开始,包括最后一位,-len(a)表示第一位,但是不包括一位。
表示第一位的还有0,0放在站点位表示不包括第一位。【:0:-1】
两天了我终于弄明白了我瞎敲的这个为什么好使了。
看一下示例,给120,返回12,0被舍除了,很简单,要求返回一个int型,int(str)就会将0自动省去。
还有最后一个问题,长度限制32位,反转后溢出返回0,注意是反转后,所有再装换为int型去0后还需要转成字符串判断长度在返回int型。
依照这个思路写下去。
测试用例基本通过了,这个告诉我们应该返回0,
读题:
通过,没什么问题!结束啦