Leetcode篇:字符串轉為整數
阿新 • • 發佈:2018-09-29
lse 是個 all dal 超過 init soft 多余 說明
@author: ZZQ
@software: PyCharm
@file: myAtoi.py
@time: 2018/9/20 20:54
要求:實現 atoi,將字符串轉為整數。
1)根據需要丟棄任意多的空格字符,直到找到第一個非空格字符為止 2)如果第一個非空字符是正號或負號,選取該符號; 3) 將其與後面盡可能多的連續的數字組合起來,這部分字符即為整數的值。 4) 如果第一個非空字符是數字,則直接將其與之後連續的數字字符組合起來,形成整數。 5) 字符串可以在形成整數的字符後面包括多余的字符,這些字符可以被忽略,它們對於函數沒有影響。 6) 當字符串中的第一個非空字符序列不是個有效的整數;或字符串為空;或字符串僅包含空白字符時,則不進行轉換。 7) 若函數不能執行有效的轉換,返回 0。
說明:
假設我們的環境只能存儲 32 位有符號整數,其數值範圍是 [?2^31, 2^31 ? 1]。
如果數值超過可表示的範圍,則返回 INT_MAX (2^31 ? 1) 或 INT_MIN (?2^31) 。
class Solution(): def __init__(self): pass def myAtoi(self, str): """ :type str: str :rtype: int """ # 導入正則模塊 import re # 字符串中查找全部符合條件的整數,返回的是列表,第一個參數是正則,第二個參數是字符串 # strip()字符串去空格 ret = re.findall(r"^[-+]?\d+", str.strip()) # 判斷是否有匹配的值,沒有的話返回0,例如"word values 987",匹配不到,返回0 if ret: ret_str = ret[0] # 匹配的數字的字符串 ret_str2 = "" # 記錄去符號的字符串,ret_str後面還要使用,所以定義一個新的變量記錄 # 判斷是否帶有符號 + or - if ret_str[0] == "-" or ret_str[0] == "+": ret_str2 = ret_str[1:] else: ret_str2 = ret_str # str轉int ret_int = int(ret_str2) # 判斷第一個字符是否為負號 if ret_str[0] == "-": # 三目運算符,判斷是否溢出 # 如果ret_int <= 2**31則返回-ret_int,否則返回-2**31 return -ret_int if ret_int <= 2**31 else -2**31 else: return ret_int if ret_int < 2**31 else 2**31-1 else: return 0 if __name__ == "__main__": answer = Solution() str = " -42" print(answer.myAtoi(str=str))
Leetcode篇:字符串轉為整數