54 转换字符串到整数
题目:实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。
样例
“10” =>10
“-1” => -1
“123123123123123” => 2147483647
“1.0” => 1
思路
样例中:" 12lint"=12;
" 12-lin 33"=12
"-12- li"=-12
"lint -12"=0
- 合法的整数:第一个是空格空格…空格 +(-) 数字(1-9)数字(0-9)…数字(0-9)
- 新建一个空字符,存放得到的整数字符串。
- 先找到不是空格的第一个字符,若不是数字和正负,则返回这个空字符,后面用int(该字符)会出错返回0.
- 找到第一个是数字(不包括0)或者正负,后面只能是数字(包括0)
- 若接下来出现只能出现数字,不是a=’0123456789’则返回前面得到的整数字符串。
本次用到了python异常处理try和except
代码
class Solution:
# @param str: a string
# @return an integer
def atoi(self, str):
# write your code here
str1='' #存放str出现的合法整数
a='0123456789'
b='-+123456789'
for i in str:
if i==' ': #一开始空格,都直接continue
continue
if len(str1)==0 and i in b:
str1=str1+i
continue
if i in a:
str1=str1+i
continue
break
try:
a=int(str1) #若不是数字,int()会异常
if -2147483648<=a<=2147483647:
return a
if a>0:
return 2147483647
else:
return -2147483648
except:
return 0