这个问题比较基础,主要要考虑字符串为空、正负符号、int 溢出以及出现特殊字符的情况。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public: int StrToInt(string str) { if(str.size()<=0) return 0; int index=0; long result=0; int signal=1; if(str[index]=='+'){ index++; }else if(str[index]=='-'){ signal=-1; index++; } for(;index<str.size();index++){ char tchar=str[index]; if(tchar<'0'||tchar>'9') return 0; result=result*10+(long)(tchar-'0'); if((signal==1 && result>INT_MAX)||(signal==-1 && -result<INT_MIN)) return 0; } return signal*(int)result; } };
|