質問8 LeetCodeは、文字列、整数に変換します

トピック:

あなたが機能を実装するために税引後営業利益、それは文字列を整数に変換することができます。

まず、空白文字で始まります関数は、これまでの最初の非空白文字を見つけるまで、必要であれば無用捨てます。

私たちは、整数の印として、後に連続した数字を上にして、可能な限り、最初の非空白文字が正または負の数であるシンボルのコンビネーションを見つけた場合、最初の非空白文字がある場合連続した数字が整数を形成するために結合された直後の図。

また、余分な文字を存在する可能性がある、有効な整数部分の後の文字列に加えて、これらの文字は無視することができ、彼らは機能に影響はありません。

注:最初の非空白文字の文字列が有効な整数文字列が空でない場合、または空白のみの文字列が含まれている場合、あなたは変換の機能である必要はありません。

いずれにしても、機能が効果的に変換できない場合は、0が返されます。

説明:

我々は、環境が32ビット符号付き整数のサイズは、数値範囲[-231 231--1]を格納することができると仮定する。またはINT_MIN(-231) - 値がこの範囲を超える場合、INT_MAX(1 231)を返します。

テストケース

例1:

入力: "42"
出力:42
例2:

入力:「-42」
出力:-42
解説:最初の非空白文字「 - 」、それは負の符号です。
我々は、すべてのデジタル連続で負の数と、後できるだけ合わせ、最終的には-42を取得します。
例3:

入力:「4193の言葉で、」
出力:4193
説明:次の文字が数値ではないので、デジタルOFF「3」に変換。
例4:

入力:「言葉と987」
出力:0
説明:「W」最初の非空白文字が、それは正の数または負の数ではありません。
したがって、変換を効果的に行うことができません。
例5:

入力:「-91283472332」
出力:-2147483648
説明:番号「-91283472332」32ビット符号付き整数の範囲を超えます。
だから、INT_MIN(-231)を返します。

コード:

class Solution {
    public int myAtoi(String str) {
        str=str.trim();//去除空格
        if(str==null || str.length()==0) return 0;//如果str为空或者长度为0就直接返回0
        char fristChar=str.charAt(0);
        int start=0;//指针指向str的开始
        int sign=1;//记录正负号
        long res=0;//用于存整形
        if(fristChar=='+'){
            sign=1;
            start++;
            
        }//如果为+就将sign记录为1,并将start向后走一位
        if(fristChar=='-'){
            sign=-1;
            start++;
            
        }//如果为-就将sign记录为-1,并将start向后走一位
        for (int i = start; i < str.length(); i++) {
            if (!Character.isDigit(str.charAt(i))) {
                return (int) res * sign;
            }
            res=res*10+str.charAt(i)-'0';//-‘0’ 的意思是将字符串数字变为long型的数字,查一下ASCII表就理解了
            if(sign==1&&res>Integer.MAX_VALUE)
                return Integer.MAX_VALUE;//如果超出了Interger的最大值则返回Interger的MAX_
            if(sign==-1&&res>Integer.MAX_VALUE)
                return Integer.MIN_VALUE;////如果超出了Interger的最小值则返回Interger的MIN
            
        }
        return (int) res*sign;
    }
}
公開された63元の記事 ウォン称賛12 ビュー4080

おすすめ

転載: blog.csdn.net/qq_45353823/article/details/100767763