leetcode 8. String to Integer (atoi)

本文详细解析了LeetCode上字符串转整数(Atoi)的问题,包括解析规则、溢出处理等核心实现细节,并提供了一个完整的C++解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 };

 

转载于:https://www.cnblogs.com/aiheshan/p/5769023.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值