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;
}
};
分类:
数据结构与算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」