天天看點

Leetcode 8. 字元串轉換整數 (atoi)思路編寫

Github

文章目錄

  • 思路
  • 編寫

思路

  • 首先去除空白字元 str.split()
  • 在傳回的數組中,查找到第一個不為空的子串
  • 設定flag,為整數字元串的正負号
  • 依次存儲不是字元的整數字元
  • 判斷存儲的整數字元串是否有效
  • 是否越界

編寫

class Solution:
    def myAtoi(self, str: str) -> int:
        arrStr = str.split()
        # 判讀是否字元串是否為空
        if(len(arrStr) == 0):
            return 0
        # 隻判斷第一個字元串
        numStr = ""
        s = arrStr[0]
        # 提取正負号
        if(s[0] in "+-0123456789"):
            numStr = numStr + s[0]
        else:
            return 0
        # 提取數字
        for j in range(1, len(s)):
            tmp = s[j]
            if(not tmp.isdigit()):
                break
            numStr = numStr + tmp
        # 判斷是否提取到數字
        if(not numStr or numStr=='+' or numStr=='-'):
            return 0
        num = int(numStr)
        # 判斷是否越界
        if(num >= 2**31):
            return (2**31-1)
        if(num < -2**31):
            return -2**31
        return num