算法:
从首开始,将每一位字符转成数字(使用-‘0’),然后乘10累加。
边界条件很复杂:
1、正负数判断,正负符号判断
2、是否在0~9之间的字符
3、是否超过了int的上下限
class Solution {
public:
int StrToInt(string str) {
if(str.size() == 0)
return 0;
bool flag = false;
int i = 0;
//判断正负号,如果有符号数,指针向后移动
if(str[i] == '-'){
flag = true;
i++;
}
else if(str[i] == '+')
i++;
//开始转换
long num = 0;
for (; i <str.size() ; ++i) {
//必须是整数
if(str[i]>'9'||str[i]<'0')
return 0;
else{
num = num*10 + (str[i] -'0');
}
}
//保证正负数在int型之内
if(flag){
num *= -1;
if(num<INT_MIN)
return 0;
}
else{
if(num > INT_MAX)
return 0;
}
//判别正负号
int res = (int)num;
return res;
}
};