1. 程式人生 > >8. String to Integer(Atoi)

8. String to Integer(Atoi)

題目:

解答:

關鍵是注意怎麼判定溢位的問題,測試用例一定要保證有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)