题目描述
请你写一个函数 StrToInt,实现把字符串转换成整数这个功能。
当然,不能使用 atoi 或者其他类似的库函数。
样例
输入:"123"
输出:123
long判溢int
利用long判断int是否溢出较为简单,请看代码注释!
C++ 代码
class Solution {
public:
int strToInt(string str) {
long ans=0,n=str.size(),flag=1;
for(int i=0;i<n;i++)
{
if(str[i]==' ' || str[i]=='+') continue; //无效字符,跳过
if(str[i]=='-') {flag=-1; continue;} //标记符号为负
if(str[i]>'9' || str[i]<'0') //数字后面的字符不合法(eg:"123abc"),直接结束
break;
ans*=10; //字符转化为数字
ans+=str[i]-'0';
if(ans>INT_MAX && flag==1) return INT_MAX; //正溢出
if(ans>INT_MAX && flag==-1) return INT_MIN; //负溢出
}
// return flag;
return ans*flag; //无溢出,直接返回,记得附带上符号
}
};