剑指offer系列39:把字符串转换成整数

主要代码其实很少,主要是对各种情况的判断。在做题的时候一定要考虑到各种情况的非法输入。

1.前面的空格需要跳过

2.判断数字的正负号并记录

3.如果有非法输入例如字母和其他非数字和正负号的字符,退出返回0

4.返回的是一个数字,所以一定要考虑数字的边界问题

5.对于各种情况考虑到之后最好再加一个无条件的输出语句,防止没有考虑到的情况发生

 1 class Solution {
 2 public:
 3     int StrToInt(string str) {
 4         if (str.empty())
 5             return 0;
 6         auto t = str.begin();
 7         while (*t == ' '&&t!=str.end()-1)//排除前面的空格
 8         {
 9             t++;
10         }
11         bool neg = false;//符号判断位,默认为正数
12         if (*t == '+')
13         {
14             t++;
15         }
16         else
17         {
18             if (*t == '-')
19             {
20                 t++;
21                 neg = true;
22             }
23 
24         }
25         long long int val = 0;
26         for (; t != str.end(); t++)
27         {
28             if (*t >= '0'&&*t <= '9')//这里是将字符串转换为数字的基础操作,记住
29             {
30                 val *= 10;
31                 val += *t-'0';
32                 if ((neg&&val < INT_MIN) || (!neg&&val > INT_MAX))//判断数字是否越界
33                 {
34                     return 0;
35                 }
36             }
37             else
38             {
39                 return 0;
40             }
41         }
42         if (t != str.end())
43             return 0;
44         if (neg)
45             return -val;
46         else
47             return val;
48     }
49 };

 

转载于:https://www.cnblogs.com/neverland0718/p/11237029.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值