主要代码其实很少,主要是对各种情况的判断。在做题的时候一定要考虑到各种情况的非法输入。
1.前面的空格需要跳过
2.判断数字的正负号并记录
3.如果有非法输入例如字母和其他非数字和正负号的字符,退出返回0
4.返回的是一个数字,所以一定要考虑数字的边界问题
5.对于各种情况考虑到之后最好再加一个无条件的输出语句,防止没有考虑到的情况发生
1 class Solution { 2 public: 3 int StrToInt(string str) { 4 if (str.empty()) 5 return 0; 6 auto t = str.begin(); 7 while (*t == ' '&&t!=str.end()-1)//排除前面的空格 8 { 9 t++;10 }11 bool neg = false;//符号判断位,默认为正数12 if (*t == '+')13 {14 t++;15 }16 else17 {18 if (*t == '-')19 {20 t++;21 neg = true;22 }23 24 }25 long long int val = 0;26 for (; t != str.end(); t++)27 {28 if (*t >= '0'&&*t <= '9')//这里是将字符串转换为数字的基础操作,记住29 {30 val *= 10;31 val += *t-'0';32 if ((neg&&val < INT_MIN) || (!neg&&val > INT_MAX))//判断数字是否越界33 {34 return 0;35 }36 }37 else38 {39 return 0;40 }41 }42 if (t != str.end())43 return 0;44 if (neg)45 return -val;46 else47 return val;48 }49 };