问题:设计一个将字符串转换为整数的算法:
我的方法:
string = '1221'
dictionary = {'1':1,'2':2}
string2 = [dictionary[w] for w in string]
print "".join(string2)
这段代码不起作用,因为(显然)join()是一个字符串函数。如果它们都是整数,我如何加入列表的元素? (不能使用str()和int())
答案 0 :(得分:2)
我们可以使用加法和乘法来实现这一点。
s = '1234'
ans = 0
for c in s:
ans = ans*10 + ord(c)-ord('0')
print(ans)
此方法可行,因为1234 =((1 * 10 + 2)* 10 + 3)* 10 + 4.
As' 0' 〜' 9'在ascii中是连续的,因此我们可以使用ord(c)-ord('0')
来获取数字的值。
如果您想从string2
string = '1221'
dictionary = {'1': 1, '2': 2}
string2 = [dictionary[w] for w in string]
ans = 0
for x in string2:
ans = ans*10 + x
print(ans)
答案 1 :(得分:1)
def atoi(s): # ASCII to Integer, a "traditional" name for such function
return sum(10**(len(s)-p-1) * (ord(x) - ord('0')) for p,x in enumerate(s))
atoi("123")
#123
答案 2 :(得分:0)
如果每个字符都是数字字符,则int函数会将字符串转换为整数
int('1221')