题解 | #把字符串转换成整数#
把字符串转换成整数
http://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e
class Solution {
public:
bool isNumOrJJ(char c)
{
if(c >= '0' && c<= '9')
return true;
if(c == '+' || c == '-')
return true;
return false;
}
int StrToInt(string str) {
int flag=1;
string s;
//这个循环,将原先拥有各种符号的字符串修改为只有数字的字符串
for(int i=0;i<str.size();i++)
{
if(!isNumOrJJ(str[i]))
{
return 0;
}
if(str[0]=='+')
{
flag=1;
}
if(str[0]=='-')
{
flag=-1;
}
if(str[i]!='+' && str[i]!='-')
{
s+=str[i];
}
}
//此时s对象的字符串已经是全部为数字的字符串
//只需要将其化为数字即可。
long long num=0;
for(int i=0;i<s.size();i++)
{
//这里确实没有想到,这次记住了
//让字符串数字变为整型数字
//每次将其乘10,可以使该数左移一位,然后每次都留出个位
num=num*10+(s[i]-'0');
//这个数一定是整型数的区间内
if(num > INT_MAX)
{
return 0;
}
}
num*=flag;
//该数一定在整型数的区间内
if(num <INT_MIN)
{
return 0;
}
return num;
}
};
