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

本文详细介绍了如何在C++中将包含正数、负数和0的长整型字符串转换为整型数值,并讨论了边界值处理、字符串有效性检查以及错误处理策略。

 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、空字符串、字符串中有非数字、字符串开始的一段有空格等。

转载于:https://www.cnblogs.com/mengwang024/p/4630668.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值