题解 | #把字符串转换成整数#
把字符串转换成整数
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; } };