将字符串转化成整型数字
这道题坑真多,第一次见点灭数这么多的题哈哈哈
首先在转化的过程中记得不要超过long的范围(因为我用的是long存储
然后“+”“-”的情况
“++1”当作0 用了hint来表示已经有正负符号
“ 42”一开始有空格的情况
“ +0 123”中间有空格的话只取前面的部分 用cal来表示已经开始计算,不能在出现非数字
class Solution {
public:
int myAtoi(string str) {
long sum=0;
bool flag=false;
bool hint=true;
bool cal=false;
for(int i=0;i<str.length();i++)
{
if(str[i]>='0'&&str[i]<='9')
{
cal=true;
sum*=10;
sum+=(str[i]-'0');
if(sum>INT_MAX)
break;
}
else if(str[i]=='-'&&hint&&!cal)
{
flag=true;
hint=false;
}
else if(str[i]==' '&&hint&&!cal)
{
continue;
}
else if(str[i]=='+'&&hint&&!cal)
{
hint=false;
}
else
break;
}
if(flag)
sum=-sum;
if(sum<INT_MIN)
return INT_MIN;
else if(sum>INT_MAX)
return INT_MAX;
else
return sum;
}
};