8. String to Integer(Atoi)
阿新 • • 發佈:2018-11-11
題目:
解答:
關鍵是注意怎麼判定溢位的問題,測試用例一定要保證有INT_MAX, INT_MIN, INT_MAX + 1, INT_MIN - 1;
當然,如果result設定為long long就完全沒問題了,但是這樣做就太沒有難度了
程式碼:
class Solution {
public:
int myAtoi(string str) {
int result = 0, len = str.size(), sign = 1;
int index = 0;
while(index < len && str[index] == ' ') ++index;
if(index < len && (str[index] == '+' || str[index] == '-'))
{
sign = str[index] == '+' ? 1 : -1;
++index;
}
while(index < len){
if(str[index] > '9' || str[index] < '0')
break ;
int remain = str[index] - '0';
if(sign > 0 && (result > INT_MAX / 10 || result == INT_MAX / 10 && remain > 7))
return INT_MAX;
int mintmp = INT_MIN / 10 * -1;
if(sign < 0 && (result > mintmp || result == mintmp && remain > 8))
return INT_MIN;
result = result * 10 + remain;
++index;
}
return sign ? result * sign : result;
}
};
更新會同步在我的網站更新(https://zergzerg.cn/notes/webnotes/leetcode/index.html)