题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
思路
- 检查字符串的首位是否是带有符号位的
- 其他位是否是0到9之间的数字
- 如果是,num+=int(s[i])*10**(len(s)-1-i),最后有符号的加上符号
- 如果不满足,返回0
# -*- coding:utf-8 -*-
class Solution:
def StrToInt(self, s):
# write code here
if not s:
return 0
if s[0]=="+" or s[0]=="-":
x=1
else:
x=0
num=0
#用这个x去看是否有符号位,从而好让循环从第几位开始
for i in range(x,len(s)):
if s[i]>="0" and s[i]<="9":
num+=int(s[i])*10**(len(s)-1-i)
else:
return 0
if s[0]=="-":
num=-num
return num
测试用例
if __name__=='__main__':
s=Solution()
s1="+2147483647"
s2="-2147483647"
s3="1a33"
print(s.StrToInt(s1))
print(s.StrToInt(s2))
print(s.StrToInt(s3))