class Solution {
public:
int myAtoi(string s) {
string str;
int n = 0;
int m = 1;
int idx = 0;
while(s[idx] == ' '&& idx<s.size()){
//把所有数字前的所有空格去掉
idx++;
}
//记住正负号
if(s[idx]=='-'){
n = 1;
idx++;
}
else if(s[idx]=='+'){
n=0;
idx++;
}
//去掉整数前的所有零
while(s[idx]=='0'){
idx++;
}
//记录的string类型的整数
while(idx<s.size()&&s[idx]>='0'&&s[idx]<='9'){
str+=s[idx++];
}
//如果大于10直接当作超过32位处理
if(str.size()>10){
return n?INT_MIN:INT_MAX;
}
cout<<INT_MAX%1000000000;
int result = 0;
//从最后一位开始计算
for(int i = str.size()-1;i!=-1;i--){
//INT_MAX%1000000000等于147483647,就是去掉了整数最大值的首位得到的数字
if(result>INT_MAX%1000000000&&str[0]>'1'){
return n?INT_MIN:INT_MAX;
}
result+=(str[i]-'0')*m;
cout<<"result = "<<result<<" m = "<< m<<endl;
//防止超出整数上限
if(m == 1000000000)break;
m*=10;
}
return n?result*-1:result;
}
};
字符串转换整数 (atoi)
最新推荐文章于 2024-11-09 05:20:46 发布
该代码段展示了一个C++类方法,用于将输入字符串转换为整数。它首先去除前导空格,处理正负号,跳过整数前面的零,并检查是否超过32位整数的范围。如果计算过程中可能超出整数最大值,会返回INT_MIN或INT_MAX作为结果。
摘要由CSDN通过智能技术生成