leetcode 8: 字符串转整数(atoi)
實(shí)現(xiàn) atoi,將字符串轉(zhuǎn)為整數(shù)。
該函數(shù)首先根據(jù)需要丟棄任意多的空格字符,直到找到第一個(gè)非空格字符為止。如果第一個(gè)非空字符是正號或負(fù)號,選取該符號,并將其與后面盡可能多的連續(xù)的數(shù)字組合起來,這部分字符即為整數(shù)的值。如果第一個(gè)非空字符是數(shù)字,則直接將其與之后連續(xù)的數(shù)字字符組合起來,形成整數(shù)。
字符串可以在形成整數(shù)的字符后面包括多余的字符,這些字符可以被忽略,它們對于函數(shù)沒有影響。
當(dāng)字符串中的第一個(gè)非空字符序列不是個(gè)有效的整數(shù);或字符串為空;或字符串僅包含空白字符時(shí),則不進(jìn)行轉(zhuǎn)換。
若函數(shù)不能執(zhí)行有效的轉(zhuǎn)換,返回 0。
說明:
假設(shè)我們的環(huán)境只能存儲 32 位有符號整數(shù),其數(shù)值范圍是?[?231,? 231?? 1]。如果數(shù)值超過可表示的范圍,則返回 ?INT_MAX (231?? 1) 或?INT_MIN (?231) 。
示例?1:
輸入: "42" 輸出: 42示例?2:
輸入: " -42" 輸出: -42 解釋: 第一個(gè)非空白字符為 '-', 它是一個(gè)負(fù)號。我們盡可能將負(fù)號與后面所有連續(xù)出現(xiàn)的數(shù)字組合起來,最后得到 -42 。示例?3:
輸入: "4193 with words" 輸出: 4193 解釋: 轉(zhuǎn)換截止于數(shù)字 '3' ,因?yàn)樗南乱粋€(gè)字符不為數(shù)字。示例?4:
輸入: "words and 987" 輸出: 0 解釋: 第一個(gè)非空字符是 'w', 但它不是數(shù)字或正、負(fù)號。因此無法執(zhí)行有效的轉(zhuǎn)換。示例?5:
輸入: "-91283472332" 輸出: -2147483648 解釋: 數(shù)字 "-91283472332" 超過 32 位有符號整數(shù)范圍。 因此返回 INT_MIN解答: 1 int myAtoi(string str) { 2 int res = 0; 3 int flag = 1; 4 int i = 0; 5 while(str[i] == ' ' && i < str.size()) 6 ++i; 7 if(i < str.size()) 8 { 9 if(str[i] == '-') 10 { 11 flag = -1; 12 i++; 13 } 14 else if(str[i] == '+') 15 i++; 16 else if(str[i] < '0' || str[i] > '9') 17 return 0; 18 for(; i < str.size(); ++i) 19 { 20 if(str[i] < '0' || str[i] > '9') 21 break; 22 if(res > INT_MAX / 10 || (res == INT_MAX/10 && str[i] - '0' > INT_MAX %10)) 23 return flag > 0 ? INT_MAX : INT_MIN; 24 res = res * 10 + str[i] - '0'; 25 } 26 27 } 28 return res * flag; 29 }
?
轉(zhuǎn)載于:https://www.cnblogs.com/bzaq/p/9950360.html
總結(jié)
以上是生活随笔為你收集整理的leetcode 8: 字符串转整数(atoi)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 清默网络linux班,linux笔记(2
- 下一篇: 手动创建两个文本文件text1.txt和