【LeetCode 8_字符串_实现】String to Integer (atoi)

 1 enum status{VALID = 0, INVALID};
 2 int g_status;
 3 
 4 long long SubStrToInt(const char* str, bool minus) 
 5 {
 6     long long num = 0;
 7     int flag = minus ? -1 : 1;
 8 
 9     while (*str != '\0') {
10         if (*str >= '0' && *str <= '9') {
11             num = num * 10 + flag * (*str - '0');
12 
13             if ((!minus && num > 0x7FFFFFFF) 
14                 || (minus && num < (signed int)0x80000000)) {
15                 num = 0;
16                 break;
17             }
18             str++;
19         } else {
20             num = 0;
21             break;
22         }
23     }
24     if (*str == '\0')
25         g_status = VALID;
26 
27     return num;
28 }
29 
30 int StrToInt(const char* str)
31 {
32     g_status = INVALID;
33     long long num = 0;
34     bool minus = false;
35 
36     if (str != NULL && *str != '\0') {
37         if (*str == '+') {
38             str++;
39         }
40         else if (*str == '-') {
41             minus = true;
42             str++;
43         }
44 
45         if (*str != '\0')
46             num = SubStrToInt(str, minus);
47     }
48     return (int)num;
49 }

需要考虑的几个方面:

1、输入的字符串表示正数、负数和0;

2、边界值,最大的正整数和最小的负整数;

3、输入字符串为NULL、空字符串、字符串中有非数字、字符串开始的一段有空格等。

posted @ 2015-07-08 16:48  QingLiXueShi  阅读(187)  评论(0编辑  收藏  举报