题目描述:
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。数值为0
或者字符串不是一个合法的数值则返回0
。
解法:
(1)由于字符串中若出现字符,只能是+
或-
字符,且只能在第一个字符出现,因此先判断第一个字符是不是+
或-
(如果字符串长度为1
且第一个字符是+
或-
,返回0
);
(2)对于其余字符,如果其中出现字符0
到字符9
以外的字符,返回0
。如果在0
到9
之间,用ord()函数将其转换为ASCII码,减去48,就是整型数字了。
代码:
class Solution:
def StrToInt(self, s):
if not s:
return 0
rev = 1
if s == '+' or s == '-':
return 0
elif s[0] == '+':
s = s[1:]
elif s[0] == '-':
s = s[1:]
rev = -1
if s[0] == '0':
return 0
ans = 0
wei = 1
for i in range(len(s)-1, -1, -1):
c = s[i]
if c < '0' or c > '9':
return 0
else:
ans += (ord(c)-48)*wei
wei *= 10
return rev*ans