《Leetcode of December》劍指 Offer 67. 把字串轉換成整數
class Solution:
def strToInt(self, str: str) -> int:
'''
^:匹配字串開頭
[\+\-]:代表一個+字元或-字元
?:前面一個字元可有可無
\d:一個數字
+:前面一個字元的一個或多個
'''
#正規表示式
INT_MAX = 2147483647
INT_MIN = -2147483648
s= str.strip()
res = re.compile(r'^[\+\-]?\d+')
num = res.findall(s)
print(num)
#收集列表裡面的值
nums = int(*num)
return max(min(nums, INT_MAX), INT_MIN)
#樸素寫法
str = str.strip()
if not str or (len(str)>0 and str[0].isalpha()):
return 0
res = ''
index=0
if str[0]=='-' or str[0]=='+':
index+=1
for i in range(index,len(str)):
if str[i].isdigit():
res+=(str[i])
else:
break
if res:
if index:
res = int(res) if str[0]=='+' else -int(res)
else:
res = int(res)
if res>=2**31-1:
return 2**31-1
elif res<=-2**31:
return -2**31
else:
return res
else:
return 0
總結:兩種做法:①正規表示式,高效簡潔;②樸素判斷,程式碼冗餘,清晰。
相關文章
- 力扣 - 劍指 Offer 67. 把字串轉換成整數力扣字串
- 劍指offer——把字串轉換成整數C++字串C++
- 《劍指offer》:[49]把字串轉化成整數字串
- 【劍指offer】字串轉整數字串
- 劍指offer(Java版)--將字串轉換為整數Java字串
- JZ-049-把字串轉換成整數字串
- 把字串轉換成整數(Java實現)字串Java
- 【劍指offer】左旋轉字串字串
- 【leetcode】劍指 Offer 16. 數值的整數次方LeetCode
- 劍指offer-字串空格替換為“ ”字串
- 【劍指offer】替換字串中的空格字串
- 劍指Offer 表示數值的字串字串
- 將整數轉換成字串字串
- 《劍指offer》:[54]表示數值的字串字串
- 《劍指offer》:[42-1]左旋轉字串字串
- 【劍指offer】把陣列排成最小的數陣列
- 【劍指offer】字串的排列字串
- LeetCode 劍指 Offer 05. 替換空格LeetCode
- LeetCode|劍指 Offer 49.醜數LeetCode
- 劍指Offer系列之「表示數值的字串」字串
- 劍指offer面試題11 數值的整數次方面試題
- Leetcode劍指offer(八)LeetCode
- 【劍指offer】【2】字串的空格字串
- 【劍指offer】字串的組合字串
- 劍指Offer-34-把陣列排成最小的數陣列
- 劍指offer——把陣列排成最小的數C++陣列C++
- 劍指 Offer 38. 字串的排列字串
- 【劍指offer】調整陣列順序陣列
- 字串轉換整數(atoi)字串
- Leetcode 劍指 Offer 40. 最小的k個數LeetCode
- 力扣 - 劍指 Offer 45. 把陣列排成最小的數力扣陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 劍指Offer-把陣列中的數排成一個最小的數陣列
- 轉換成為整數
- 劍指offer—58_2.左旋轉字串—分析及程式碼(Java)字串Java
- [劍指offer] 把二叉樹列印成多行二叉樹
- 劍指offer-轉陣列的最小數字-php陣列PHP