将字符串添加负数_Go语言实现LeetCode算法:8 字符串转整数
Go語言中文網,致力于每日分享編碼、開源等知識,歡迎關注我,會有意想不到的收獲!
看到題目,是不是超級簡單,用 strconv.Atoi 就可以了?題目當然不是這么簡單的要求。
1 題目描述
實現atoi函數,以將字符串轉換為一個整數。
該函數首先丟棄盡可能多的空格字符,直至找到第一個非空格字符。然后由該字符開始(可能會有正負標志)找出盡可能多的數字字符,最后將其轉換為一個整數。
在連續數值字符后可能還會有其他字符,請將這些字符略過,并不影響函數行為。
若字符串第一個非空格字符已非數字字符,或該字符串為空,甚至該字符串為純空格字符串,其為無效字符串,返回0即可。
注意:
a)僅認為' '為空格字符;
b)假定運行環境存儲整數范圍屬于[?231, 231?1],即32位有符號整數范圍。若數值超過該表示范圍限制,返回INT_MAX(2^31?1)或INT_MIN(?2^31)。
例子1:
輸入:"42"
輸出:42
例子2:
輸入:" -42"
輸出:-42
釋義:第一個非空字符是'-',然后取盡可能最多的數位,得到整數42。
例子3:
輸入:"4193 with words"
輸出:4193
釋義:取到3時停止,因后面的字符非數字。
例子4:
輸入:"words and 987"
輸出:0
釋義:第一個非空字符為'w',不是數字也不是+/-符號,因此無需進行后續字符判斷,直接返回0。
例子5:
輸入:"-91283472332"
輸出:-2147483648
釋義:"-91283472332"超過了32位有符號整數表示范圍,因此返回INT_MIN(?2^31)。
題目出處:
https://leetcode.com/problems/string-to-integer-atoi/
2 解決思路
首先trim掉頭部空格字符,找到第一個非空格字符:
若為'+',自下一個字符遍歷該字符串,疊加所有連續數字字符,直至找到最大的正整數(若擴展過程變為負數,說明越界,返回32位最大正整數);
若為'-',將negtive設為true,自下一個字符遍歷該字符串,疊加所有連續數字字符,直至找到最大的負整數(若擴展過程發現小于最小負整數,說明越界,返回32位最大負整數);
若為數字字符,自當前字符遍歷該字符串,疊加所有連續數字字符,直至找到最大的正整數(若擴展過程變為負數,說明越界,返回32位最大正整數)。
3 golang實現代碼
https://github.com/olzhy/leetcode/blob/master/8_String_To_Integer/test.go
原文鏈接:https://leileiluoluo.com/posts/leetcode-string-to-integer.html
本文作者:磊磊落落的博客,原創授權發布
總結
以上是生活随笔為你收集整理的将字符串添加负数_Go语言实现LeetCode算法:8 字符串转整数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习图像标注工具labelme
- 下一篇: 自动控制原理第二版王建辉_王建辉自动控制