Leetcode-String to Integer (atoi)

问题

Implement atoi to convert a string to an integer.
将一个字符串转化为整数

问题看似简单,实际上有许多需要注意的细节。
要点:

  • 对特殊字符进行处理:空格字符,放在前面的0字符
  • 只有在数字0-9内的字符才能转化为整数,否则全部返回0
  • 正负号的问题:默认为正数,直接读取符号判断是否为正数还是负数
  • 边界的问题:去掉正负数之后,与INT_MAX(2^31-1=2147483647)的值进行对比,越界则直接返回INT_MAX或者INT_MIN(关于溢出的问题,可以参考博客:https://www.sigmainfy.com/blog/2s-complement-int-max-int-min-difference.html
class Solution {
public:
    int myAtoi(string str) {
        int base=0,sign=1,i=0;
        while(str[i]==' ')i++;
        if(str[i]=='-'||str[i]=='+')
            sign=1-2*(str[i++]=='-');
        while(str[i] >= '0' && str[i] <= '9')
        {
            if(base>INT_MAX/10 || (base==INT_MAX/10 && str[i]-'0'>7))
            {
               if(sign==1)return INT_MAX;
               else return INT_MIN;
            }
            base=base*10+(str[i++]-'0');

        }
        return base*sign;

    }
};
posted @   风一样的liz  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示