題目
把字符串轉換成整數
注意的地方
測試用例
功能測試:+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;
}