题目
class Solution {
public:
int strToInt(string str) {
if(str.size()==0)return 0; //空字符串情况
int cur=0;
while(str[cur]==' ')cur++; //直接从非空字符开始处理
bool overflow=false;
bool minus=false;
unsigned int ans=0;
if(str[cur]=='+'){ //字符串首位的'+' '-'分别处理
cur++;
}else if(str[cur]=='-'){
cur++;
minus=true;
}
while(str[cur]>='0'&&str[cur]<='9'){ //1.不需要str[cur]-'0'>=0&&str[cur]-'0'<=9这么麻烦 2.不要漏了等号=
int temp=str[cur]-'0';
if((ans>(INT_MAX-temp)/10&&minus==false)||(ans>((unsigned int)INT_MIN-temp)/10&&minus==true)){ //判断是否溢出,从ans*10+temp>INT_MAX变形而来
overflow=true;
break;
}
ans=ans*10+temp; //将字符串转化为整数的公式
cur++;
}
if(overflow==false&&minus==false) return ans; //包含了字符串首位不合法的情况(即也是overflow==false&&minus==false)
if(overflow==false&&minus==true) return -ans;
if(overflow==true&&minus==false) return INT_MAX;
else return INT_MIN;
}
};
以上代码转自力扣评论区
分类:
算法编程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具