示例 1:git
輸入: "42"
輸出: 42
示例 2:spa
輸入: " -42"
輸出: -42
解釋: 第一個非空白字符爲 '-', 它是一個負號。
咱們儘量將負號與後面全部連續出現的數字組合起來,最後獲得 -42 。
示例 3:code
輸入: "4193 with words"
輸出: 4193
解釋: 轉換截止於數字 '3' ,由於它的下一個字符不爲數字。
示例 4:blog
輸入: "words and 987"
輸出: 0
解釋: 第一個非空字符是 'w', 但它不是數字或正、負號。
所以沒法執行有效的轉換。
示例 5:ip
輸入: "-91283472332"
輸出: -2147483648
解釋: 數字 "-91283472332" 超過 32 位有符號整數範圍。
所以返回 INT_MIN (−231) 。it
廢話很少說io
1 class Solution: 2 def myAtoi(self, str): 3 str = str.strip() 4 flag=1 5 flag2=False 6 res = 0 7 if len(str)==0: 8 return 0 9 elif str[0]=='-': 10 flag = -1 11 str = str[1:] 12 elif str[0]=='+': 13 str = str[1:] 14 elif str[0].isdigit()==False: 15 return 0 16 of = (1<<31)-1 if flag>0 else 1<<31 17 while len(str)!=0: 18 if str[0].isdigit() == False: 19 break 20 res = res * 10+int(str[0]) 21 if res >of: 22 flag2=True 23 break 24 str = str[1:] 25 if flag2 : 26 if flag==-1: 27 return flag*(1<<31) 28 else: 29 return (1<<31)-1 30 else: 31 return flag*res