Algorithm
//Pop and Push Digits & Check before Overflow//pop operation:pop = x % 10;x /= 10;//push operation:temp = rev * 10 + pop;rev = temp;
切片(slice)
>>> a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> a[6:5] #如果start的位置比stop还靠后,Python直接返回空序列。[]>>> a[5::-1][5, 4, 3, 2, 1, 0]>>> a[:4:-2][9, 7, 5]>>> a[::-1][9, 8, 7, 6, 5, 4, 3, 2, 1, 0]'''当step为负数,切片将其解释为从start出发以步长step逆序索引序列。在缺省的情况下,Python的行为是尽可能取最大区间,此时访问是逆序的,start应尽量取大,stop应尽量取小,才能保证区间最大。'''
Solution
'''利用切片反转字符串'''if x >= 2**31-1 or x <= -2**31: return 0else: strg = str(x) if x >= 0: revst = strg[::-1] else: temp = strg[1:] temp2 =temp[::-1] revst = "-" + temp2 if int(revst) >= 2**31-1 or int(revst) <= -2**31: return 0 else: return int(revst)
'''通过sign = [1,-1][x < 0]判断x正负'''sign = [1,-1][x < 0] # If x < 0, then x < 0 is True. As we know int(true) == 1, # so [1, -1][1] == -1.rst = sign * int(str(abs(x))[::-1]return rst if -(2**31)-1 < rst < 2**31 else 0
Python中反转字符串的方法
string = 'ABCDEF''''简单的步长为-1,即字符串的翻转'''def string_reverse1(string): return string[::-1]'''交换前后字母的位置'''def string_reverse2(string): t = list(string) l = len(t) for i,j in zip(range(l-1, 0, -1), range(l//2)): t[i], t[j] = t[j], t[i] return "".join(t)'''递归的方式,每次输出一个字符'''def string_reverse3(string): if len(string) <= 1: return string return string_reverse3(string[1:]) + string[0] #通过string[0]把首字母放到最后'''双端队列,使用extendleft(函数)'''from collections import dequedef string_reverse4(string): d = deque() d.extendleft(string) return ''.join(d)'''使用for循环,从左至右输出'''def string_reverse5(string): return ''.join(string[i] for i in range(len(string)-1, -1, -1)) #步长为-1
Python range()函数
'''Syntax:range(startm stop[, step])'''>>> range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> range(0, 30, 5)[0, 5, 10, 15, 20, 25]>>> range(0, -10, -1)[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]>>> range(0)[]>>> range(1, 0)[]>>>x = 'python'>>> for i in range(len(x)):... print(x[i])...python>>>
Pyton3 zip()函数
>>> a = [1, 2, 3]>>> b = [4, 5, 6]>>> c = [4, 5, 6, 7, 8]>>> zipped = zip(a,b) #返回一个对象,在Python2.x中返回的是一个列表。>>> zipped<zip object at 0x103abc288>>>> list(zipped) [(1, 4), (2, 5), (3, 6)]>>> list(zip(a,c)) #元素个数与最短的列表一致[(1,4), (2,5), (3,6)]>>> a1, a2 = zip(*zip(a,b)) #与zip相反,zip(*)可理解为解压,返回二维矩阵式>>> list(a1)[1, 2, 3]>>> list(a2)[4, 5, 6]