一、题目
二、思路
本题关键点:
- 1、对输入字符串进行处理
- 2、防止溢出,进行溢出判断
- 3、输出时注意正数、负数
三、代码
class Solution {
public:
int strToInt(string str) {
if(str.empty())
{
return 0;
}
string nums="";
if(str[0]!=' ' && str[0]!='-' && str[0]!='+' && (str[0]<'0' || str[0]>'9'))
{
return 0;
}
for(int i=0;i<str.length();++i)
{
if((str[i]=='-' || str[i]=='+') && nums.empty())
{
nums+=str[i];
}
else if(str[i]==' '&& nums.empty())
{
}
else if(str[i]>='0' && str[i]<='9')
{
nums+=str[i];
}
else
{
break;
}
}
if(nums.empty())
{
return 0;
}
int pos=0;
if(nums[0]=='-')
{
pos=1;
nums=nums.substr(1,nums.length()-1);
}
else if(nums[0]=='+')
{
nums=nums.substr(1,nums.length()-1);
}
int Count=0;
for(int i=0;i<nums.length();++i)
{
if(Count<INT_MAX/10)
{
Count=Count*10+(nums[i]-'0');
}
else if(Count==INT_MAX/10 && (nums[i]-'0')<=INT_MAX%10)
{
Count=Count*10+(nums[i]-'0');
}
else if(Count==INT_MAX/10 && (nums[i]-'0')>INT_MAX%10)
{
if(pos==1)
{
return INT_MIN;
}
else
{
return INT_MAX;
}
}
else if(Count>INT_MAX/10)
{
if(pos==1)
{
return INT_MIN;
}
else
{
return INT_MAX;
}
}
}
if(pos==1)
{
return -Count;
}
return Count;
}
};