1. 程式人生 > >LeetCode 8. 字串轉整數 (atoi)

LeetCode 8. 字串轉整數 (atoi)

public int myAtoi(String str) {
        //剔除首位空白字元
        str = str.trim();
        if (str.equals("")) return 0;
        char[] ans = str.toCharArray();
        int i = 1;
        //如果第一個字元是數字或者正負號,則找最大連續數
        if ((48 <= ans[0] && ans[0] <= 57) || (ans[0] == 45 || ans[0] == 43)) {
            for (; i < ans.length; i++) {
                if (!(48 <= ans[i] && ans[i] <= 57)) break;
            }
            str = str.substring(0, i);
            if (str.equals("+") || str.equals("-")) return 0;
            //大數要用BigInteger處理
            BigInteger big = new BigInteger(str);
            if ((big.min(new BigInteger("2147483647"))).equals(new BigInteger("2147483647"))) {
                return Integer.MAX_VALUE;
            }
            if ((big.max(new BigInteger("-2147483648"))).equals(new BigInteger("-2147483648"))) {
                return Integer.MIN_VALUE;
            }
            return Integer.valueOf(str);
        } else {
            return 0;
        }
    }
}

 感覺比較麻煩的就是大數處理的地方,我選擇用BigInteger來處理比較方便,我看網上有人用Long,自己試了一下,在LeetCode上沒有跑起來,不知怎麼回事。