https://leetcode.com/problems/string-to-integer-atoi/
题目:将字符串转换为整数。
规则:
1. 输入的字符串前可以有多个空格;
2.遇到‘-‘或者 ‘+‘或者数字字符开始,为连续的多个数字字符。即遇到其他字符结束;
3. 多个连续数字字符后可以有其他的字符,但是不计算为整数;
4. 当输入为空,或者为不能转换的字符串,输出0;
5. 当整数大于2147483647,则输出2147483647.当小于-2147483648,则输出-2147483648
思路: 主要是注意溢出的情况,在遍历的过程中判断是否溢出,不然最后结果可以超过64位。
1 class Solution { 2 public: 3 int myAtoi(string str) { 4 int i=0,len=str.length(); 5 if(len==0) 6 return 0; 7 int flag=0; 8 while(i<len&&str[i]==‘ ‘){ 9 i++; 10 } 11 if(str[i]==‘-‘) 12 { 13 flag=1; 14 i++; 15 } 16 else if(str[i]==‘+‘) 17 { 18 i++; 19 } 20 else if(str[i]<‘0‘||str[i]>‘9‘) 21 { 22 return 0; 23 } 24 long long sum=0; 25 while(i<len){ 26 if(str[i]>=‘0‘&&str[i]<= ‘9‘) 27 { 28 sum=sum*10+(str[i]-‘0‘); 29 if(sum>2147483647) 30 break; 31 } 32 else 33 break; 34 i++; 35 } 36 int result=sum; 37 if(sum>2147483647){ 38 if(flag) 39 return -2147483648; 40 else 41 return 2147483647; 42 } 43 else 44 { 45 if(flag) 46 return -result; 47 else 48 return result; 49 } 50 } 51 };
leetcode 8. String to Integer (atoi)
原文:http://www.cnblogs.com/aiheshan/p/5769023.html