LeetCode 8. 字串轉整數 (atoi)
阿新 • • 發佈:2018-12-11
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上沒有跑起來,不知怎麼回事。