leetcode記錄-字串轉整數

來源:互聯網
上載者:User

標籤:記錄   leetcode   eof   無法   math   根據   turn   結果   分享   

實現 atoi,將字串轉為整數。

該函數首先根據需要丟棄任意多的空白字元,直到找到第一個非空白字元為止。如果第一個非Null 字元是正號或負號,選取該符號,並將其與後面儘可能多的連續的數字組合起來,這部分字元即為整數的值。如果第一個非Null 字元是數字,則直接將其與之後連續的數字字元組合起來,形成整數。

字串可以在形成整數的字元後麵包括多餘的字元,這些字元可以被忽略,它們對於函數沒有影響。

當字串中的第一個非Null 字元序列不是個有效整數;或字串為空白;或字串僅包含空白字元時,則不進行轉換。

若函數不能執行有效轉換,返回 0。

說明:

假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [?231,  231 ? 1]。如果數值超過可表示的範圍,則返回  INT_MAX (231 ? 1) 或 INT_MIN (?231) 。

樣本 1:

輸入: "42"輸出: 42

樣本 2:

輸入: "   -42"輸出: -42解釋: 第一個非空白字元為 ‘-‘, 它是一個負號。     我們儘可能將負號與後面所有連續出現的數字組合起來,最後得到 -42 。

樣本 3:

輸入: "4193 with words"輸出: 4193解釋: 轉換截止於數字 ‘3‘ ,因為它的下一個字元不為數字。

樣本 4:

輸入: "words and 987"輸出: 0解釋: 第一個非Null 字元是 ‘w‘, 但它不是數字或正、負號。     因此無法執行有效轉換。

樣本 5:

輸入: "-91283472332"輸出: -2147483648解釋: 數字 "-91283472332" 超過 32 位有符號整數範圍。      因此返回 INT_MIN (?231) 。


解答:
import java.math.BigInteger;class Solution {    public int myAtoi(String str) {  str = str.trim();        StringBuilder sb = new StringBuilder();        for (int i = 0; i < str.length(); i++) {            char c = str.charAt(i);            // 過濾無效的0            if(sb.length()==0&&c==48){                continue;            }            if (i == 0) {                if (c == ‘-‘ || c == ‘+‘ || (c >= 48 && c <= 57)) {                    sb.append(c);                } else {                    break;                }            } else {                if (c >= 48 && c <= 57) {                    sb.append(c);                } else {                    break;                }            }        }        if ("".equals(sb.toString())||"-".equals(sb.toString())||"+".equals(sb.toString())) {            return 0;        }        int result;        try {            result = Integer.valueOf(sb.toString());        } catch (NumberFormatException e) {            if (sb.toString().startsWith("-")) {                return Integer.MIN_VALUE;            } else {                return Integer.MAX_VALUE;            }        }        return result;    }}

 

提交結果:

leetcode記錄-字串轉整數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.