这里的几种方法的转换都是不包括符号'-',空格和其他的不是数字的字母,也不包括小数点,在Leetcode上第8题是包括这些情况的。这里的方法仅适用于类似将’12356‘转换为数字12356。
方法一:利用str函数
不能利用int函数,我们可以用str 函数找出0-9每一个数字的字符表示
def atoi(s): s = s[::1] # 将s反转 num=0 for i,v in enumerate(s): for j in range(0,10): if v ==str(j): num+=j*(10**i) return num
方法二:利用ord函数
利用ord 函数求出每一位字符的ASCII码再减去0的ASCII码求出每一位的数字
print(ord('1')) # 49 print(ord('0')) # 48
def atoi2(s): s = s[::1] num = 0 for i,v in enumerate(s): num+=(ord(v)-ord('0'))*(10**i) return num
方法三:利用eval函数
eval函数的功能是将字符串str当成有效的表达式来求值并返回计算结果。利用每一位字符构造与1相乘的表达式,再用eval函数转换为数字即可得到每一个字符的数字。
def atoi3(s): s = s[::1] num = 0 for i,v in enumerate(s): t = '%s *1'%v n = eval(t) num+=n*(10**i) return num