LeetCode - 字符串转整数(atoi)

本文深入解析了LeetCode上字符串转整数(atoi)的问题,详细介绍了如何处理空格、正负号及数字转换,同时考虑了整数范围限制,附带C++实现代码。

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

#LeetCode - 字符串转整数(atoi)
需要考虑的几个点:
1.开头是空格字符,跳过空格到非空字符处,如果不是数字或者正负号,则返回0;
2.正负号,如果下一个字符不是数字,则返回0
3.由于给的是string,区分出其他字符与数字的区别
4.范围:INT_MAX (231 − 1) 或 INT_MIN (−231)
5.数字读取后,下一个是非数字,则停止获取数字
##代码如下

class Solution {
class Solution {
public:
    int myAtoi(string str) 
    {
      //检测str是否为空
      if (str.empty()) 
          return 0;
      int i = 0, len = str.size();
      //跳过空格
      while (i < len && str[i] == ' ')
      {
          i++;
      }
      //非空时,判断正负号
      int sign = 1;
      long result =0;
      if (str[i] == '+' || str[i] == '-') {
          sign = (str[i++] == '+') ? 1 : -1;
      }
      while('0'<= str[i] && str[i] <= '9') 
      {
            result = result*10 + (str[i++]-'0');
            if(result*sign >= INT_MAX) return INT_MAX;
            if(result*sign <= INT_MIN) return INT_MIN; 
            
      }
      return result * sign;
        
    }
};

参考资料:

https://discuss.leetcode.com/topic/2666/my-simple-solution

https://discuss.leetcode.com/topic/15891/8ms-c-solution-easy-to-understand

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值