python 字符串转换成整数
生活随笔
收集整理的這篇文章主要介紹了
python 字符串转换成整数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| String to Int
寫一個函數 StrToInt,實現把字符串轉換成整數這個功能。不能使用 atoi 或者其他類似的庫函數。 首先,該函數會根據需要丟棄無用的開頭空格字符,直到尋找到第一個非空格的字符為止。 當我們尋找到的第一個非空字符為正或者負號時,則將該符號與之后面盡可能多的連續數字組合起來,作為該整數的正負號;假如第一個非空字符是數字,則直接將其與之后連續的數字字符組合起來,形成整數。 該字符串除了有效的整數部分之后也可能會存在多余的字符,這些字符可以被忽略,它們對于函數不應該造成影響。 注意:假如該字符串中的第一個非空格字符不是一個有效整數字符、字符串為空或字符串僅包含空白字符時,則你的函數不需要進行轉換。 在任何情況下,若函數不能進行有效的轉換時,請返回 0。說明: 假設我們的環境只能存儲 32 位大小的有符號整數,那么其數值范圍為 [?231, 231 ? 1]。如果數值超過這個范圍,請返回 INT_MAX (231 ? 1) 或 INT_MIN (?231) 。示例 1:輸入: "42" 輸出: 42 示例 2:輸入: " -42" 輸出: -42 解釋: 第一個非空白字符為 '-', 它是一個負號。我們盡可能將負號與后面所有連續出現的數字組合起來,最后得到 -42 。 示例 3:輸入: "4193 with words" 輸出: 4193 解釋: 轉換截止于數字 '3' ,因為它的下一個字符不為數字。 示例 4:輸入: "words and 987" 輸出: 0 解釋: 第一個非空字符是 'w', 但它不是數字或正、負號。因此無法執行有效的轉換。 示例 5:輸入: "-91283472332" 輸出: -2147483648 解釋: 數字 "-91283472332" 超過 32 位有符號整數范圍。 因此返回 INT_MIN (?231) 。 class Solution:"""解題思路:1.過濾不符合要求的數據,直接return 02.截取目標字符串(整數字符串)3.將字符串轉化為整數4.注意邊界值int 正數小于2**31 負數大于-2**31 - 1"""def strToInt(self, s: str) -> int:to_int = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8,'9':9}s = s.strip()length = len(s)sign = Falsej = 0if not s: return 0if s[0] == '-':j = 1sign = Trueelif s[0] == '+':j = 1elif not s[0].isdigit():return 0# 計算數字字符串num_str = ''while j < length:if s[j].isdigit():num_str+=s[j]else:breakj+=1return self.string_to_int(num_str, to_int, sign)# 字符串數字轉化為整數步驟def string_to_int(self, string, to_int, sign):length = len(string)num_val = 0while length > 0:for s in string:r = to_int[s]*10**(length-1)num_val += rlength -= 1if sign is False:if num_val > 2**31-1:return 2**31-1return num_val else:if -num_val < -2**31:return -2**31return -num_val總結
以上是生活随笔為你收集整理的python 字符串转换成整数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python删除排序数组中的重复项
- 下一篇: python 零矩阵