[LeetCode]题解(python):008-String to Integer (atoi)
生活随笔
收集整理的這篇文章主要介紹了
[LeetCode]题解(python):008-String to Integer (atoi)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
題目來源:
https://leetcode.com/problems/string-to-integer-atoi/
題意分析:
????? 這道題也是簡單題,題目意思是要將字符串轉化成int。比如‘123’轉成123.
題目思路:
???? 由于有一些其他的輸入直接用int()函數肯定是不可以的。比如說‘123b’用int()函數肯定是報錯的。那么我們可以用一個ans = 0來初始化得到的int,從第一個字符s開始判斷,得到新的ans是ans = ans*10 + int(s)。題目要注意的是一些特殊情況:
1.剛開始的空格,字符開始的空格字符忽略不算;
2.‘-’和‘+’字符,第一次出現的這兩個字符可以代表得到的int的正負;
3.上述情況以外的所有非‘0’-‘9’的字符,出現這些字符的時候等于出現結束符;
4.得到的ans超過32位int最大長度。
只要在代碼中加上幾個bool判斷符,字符的一些比較和ans的大小比較一下,答案就出來了。
代碼(python):
1 class Solution(object): 2 def myAtoi(self, str): 3 """ 4 :type str: str 5 :rtype: int 6 """ 7 size = len(str) 8 if size == 0: 9 return 0 10 ans = 0 11 b = True 12 b1 = True 13 positive = True 14 i = 0 15 while i < size: 16 if str[i] != ' ': 17 b1 = False 18 if str[i] == ' ' and b1: 19 i += 1 20 continue 21 if b: 22 if str[i] =='-': 23 positive = False 24 i += 1 25 b = False 26 continue 27 if str[i] == '+': 28 i += 1 29 b = False 30 continue 31 if str[i]>= '0' and str[i] <= '9': 32 ans = ans*10 + int(str[i]) 33 if ans > 2147483647 and positive: 34 return 2147483647 35 if ans > 2147483648 and not positive: 36 return - 2147483648 37 else: 38 break 39 i += 1 40 if positive: 41 return ans 42 return -1 * ans View Code?
轉載請注明出處:http://www.cnblogs.com/chruny/p/4801655.html
轉載于:https://www.cnblogs.com/chruny/p/4801655.html
總結
以上是生活随笔為你收集整理的[LeetCode]题解(python):008-String to Integer (atoi)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript中的Array对象
- 下一篇: Python中类与对象的关系