题目
把字符串转换成整数
注意的地方
测试用例
功能测试:+1,1,0,-1
边界测试:键盘输入一个大于INT_MAX或者小于INT_MIN的数
特殊输入:"",1a2b3c,-,+
如果输入不是string对象,而是char *还要考虑NULL指针不要把stack.size()放到循环判断条件中,因为它有可能在循环体中被更新
'0''9’在内存中以ascii码存储,它的值为4857,因此,str[i]对应的数字的值为str[i] - '0'
int StrToInt(string str) {
if(str.size() == 0) return 0;
int sign = 1;
stack<int> ret;
for(int i = 0; i < str.size(); i++){
if(str[i] == '-'){
sign = -1;
continue;
}
if(str[i] == '+'){
sign = 1;
continue;
}
if(str[i] > '9' || str[i] < '0'){
return 0;
}
ret.push(str[i] - '0');
}
int MY_INT_MAX = 0x7FFFFFFF;
int MY_INT_MIN = 0x80000000;
int res = 0;
int base = 1;
if(ret.empty()) return 0;
while(!ret.empty()){
if(res*sign > MY_INT_MAX || res*sign < MY_INT_MIN) return 0;
res = res + base*ret.top();
base = base*10;
ret.pop();
}
return sign*(int)res;
}