题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
思路:
告知输入的格式:第一个是有空格吗?要过滤吗?
首先判断数字的正负。+/-
每个数逐个开始。
判断有没有超最大数
代码:
class Solution {
public:
int StrToInt(string str) {
if(str.size()==0)
return 0;
int i=0,flag=1;
int num=0;
while(str[i]==' ') //排除空格
++i;
if(str[i]=='-')
{ flag=-1;
i++
}
else if(str[i]== '+')
++i;
while(str[i]-'\0')
{
if(str[i]>='0' && str[i]<='9')
{
num=num*10+(str[i]-'0');
if( ((flag==1)&&(num>0x7fffffff))
|| ((flag==-1)&&(num>(unsigned int)0x80000000)))
{ num=0;
break;
}
}
}
return num*flag;
}
}