力扣8. 字符串转换整数 (atoi)
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣8. 字符串转换整数 (atoi)相关的知识,希望对你有一定的参考价值。
class Solution {
public:
int myAtoi(string s) {
string ans;
bool flag=false;
while(s[0]==' '&&s.size()>1) s=s.substr(1);//去除前导零
if(s[0]=='-') flag=true,s=s.substr(1);
else if(s[0]=='+') s=s.substr(1);
long long int res=0;
for(int i=0;i<s.size();i++)
{
if(s[i]>='0'&&s[i]<='9') ans+=s[i];
else break;
res=stol(ans);
if(flag) res=-res;
if(res<INT_MIN) return INT_MIN;
if(res>INT_MAX) return INT_MAX;
}
if(ans.size()==0) return 0;
return res;
}
};
另一种写法:
class Solution {
public:
int myAtoi(string s) {
bool flag=false;
while(s[0]==' '&&s.size()>1) s=s.substr(1);
if(s[0]=='-') flag=true,s=s.substr(1);
else if(s[0]=='+') s=s.substr(1);
long long int res=0;
for(int i=0;i<s.size();i++)
{
if(s[i]>='0'&&s[i]<='9') res=res*10+s[i]-'0';
else break;
if(flag) res=-res;
if(res<INT_MIN) return INT_MIN;
if(res>INT_MAX) return INT_MAX;
if(flag) res=-res;
}
if(flag) return -res;
return res;
}
};
int写法:
class Solution {
public:
int myAtoi(string s) {
int a=1;
while(s[0]==' '&&s.size()>1) s=s.substr(1);
if(s[0]=='-') a=-1,s=s.substr(1);
else if(s[0]=='+') s=s.substr(1);
int res=0;
for(int i=0;i<s.size();i++)
{
int x=s[i]-'0';
if(x>=0&&x<=9){
if(a<0)
{
if(-res<(INT_MIN+x)/10) return INT_MIN;
if(-x-res*10==INT_MIN) return INT_MIN;
}
else if(res>(INT_MAX-x)/10) return INT_MAX;
res=res*10+x;
}
else break;
}
return res*a;
}
};
以上是关于力扣8. 字符串转换整数 (atoi)的主要内容,如果未能解决你的问题,请参考以下文章