[Leetcode] 8.String to Integer (atoi)
本题题意是要自己写一个atoi函数(将字符串转换成整数),思想很简单,关键是有几处细节需要考虑:
1.数字前面有空格,如s=" 123456",空格需舍弃。
2.数字前出现了不必要或多于的字符导致数字认证错误,输出0。如s=" b1234",s=" ++1233", s=" +-1121"。
3.数字中出现了不必要的字符,返回字符前的数字。如s=" 12a1", s=" 123 123"。
4.数字越界,超过了范围(-2147483648--2147483647),分别返回-2147483648和2147483647。
实现代码如下:
1 class Solution 2 { 3 public: 4 int myAtoi(string str) 5 { 6 if(str == "") 7 return 0; 8 int i = 0; 9 long long res = 0; 10 while(str[i] != '\0' && str[i] == ' ') 11 { 12 i ++;//舍弃前面空格 13 } 14 int flag = 1; 15 if(str[i] == '-')//确定正负 16 { 17 flag = -1; 18 i ++; 19 } 20 else if(str[i] == '+') 21 { 22 i ++; 23 } 24 while(str[i] != '\0') 25 { 26 if(str[i] >= '0' &&str[i] <= '9') 27 { 28 res = res*10 + str[i] - '0'; 29 if(res > INT_MAX) 30 { 31 if(flag == 1) 32 return INT_MAX; 33 else 34 return INT_MIN; 35 } 36 i ++; 37 } 38 else break; 39 } 40 res = flag * res; 41 return (int)res; 42 } 43 };