LeetCode 題解(“字符串轉(zhuǎn)換整數(shù)”)

今天在家,做了一會(huì) leetcode 上的題目,這次的題目不難,是關(guān)于 “字符串轉(zhuǎn)換整數(shù)” 的??偟膩?lái)說(shuō),需要注意處理好邊際條件,就可以順利解答了。

請(qǐng)你來(lái)實(shí)現(xiàn)一個(gè) atoi 函數(shù),使其能將字符串轉(zhuǎn)換成整數(shù)。

首先,該函數(shù)會(huì)根據(jù)需要丟棄無(wú)用的開頭空格字符,直到尋找到第一個(gè)非空格的字符為止。接下來(lái)的轉(zhuǎn)化規(guī)則如下:

如果第一個(gè)非空字符為正或者負(fù)號(hào)時(shí),則將該符號(hào)與之后面盡可能多的連續(xù)數(shù)字字符組合起來(lái),形成一個(gè)有符號(hào)整數(shù)。
假如第一個(gè)非空字符是數(shù)字,則直接將其與之后連續(xù)的數(shù)字字符組合起來(lái),形成一個(gè)整數(shù)。
該字符串在有效的整數(shù)部分之后也可能會(huì)存在多余的字符,那么這些字符可以被忽略,它們對(duì)函數(shù)不應(yīng)該造成影響。
假如該字符串中的第一個(gè)非空格字符不是一個(gè)有效整數(shù)字符、字符串為空或字符串僅包含空白字符時(shí),則你的函數(shù)不需要進(jìn)行轉(zhuǎn)換,即無(wú)法進(jìn)行有效轉(zhuǎn)換。

在任何情況下,若函數(shù)不能進(jìn)行有效的轉(zhuǎn)換時(shí),請(qǐng)返回 0 。

注意:

本題中的空白字符只包括空格字符 ' ' 。
假設(shè)我們的環(huán)境只能存儲(chǔ) 32 位大小的有符號(hào)整數(shù),那么其數(shù)值范圍為 [?231, 231 ? 1]。如果數(shù)值超過(guò)這個(gè)范圍,請(qǐng)返回 231 ? 1 或 ?231 。

以下是 Go 語(yǔ)言實(shí)現(xiàn)寫的答案:

func myAtoi(s string) int {
    var res int64
    sign, letter, number := false, false, false
    var flag int64 = 1
    for _, v := range s {
        if v == ' ' {
            if sign || letter || number {
                break
            }
        } else if v == '-' || v == '+' {
            if sign || letter || number {
                break
            }
            sign = true
            if v == '-' {
                flag = -1
            }
        } else if v >= '0' && v <= '9' && !letter {
            number = true
            res = res*10 + (int64(v) - int64('0'))
        } else {
            letter = true
        }
        if res*flag < math.MinInt32 {
            return math.MinInt32
        }
        if res*flag > math.MaxInt32 {
            return math.MaxInt32
        }
    }
    return int(res * flag)
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容