實現atoi將字串轉換為整數。
阿新 • • 發佈:2019-01-31
leetcode第八題:
仔細考慮所有可能的輸入情況。如果您想要一個挑戰,請不要在下面看到並問您自己什麼是可能的輸入情況。
在找到第一個非空白字元之前,函式首先會丟棄許多空白字元。然後,從這個字元開始,取一個可選的初始加號或減號,然後儘可能多的數字數字,並將其解釋為一個數值。
字串可以包含其他的字元,這些字元組成了整數,這些字元被忽略,對這個函式的行為沒有影響。
如果str中的非空白字元的第一個序列不是一個有效的整數,或者如果沒有這樣的序列存在,因為任何一個str是空的,或者它只包含空白字元,那麼就不會執行轉換。
如果不能執行有效的轉換,則返回零值。如果正確的值超出了可表示值的範圍,則返回INT_MAX(2147483647)或INT_MIN(-2147483648)。
示例程式碼如下,各種情況的判斷,程式碼來自Discuss:
歡迎加入Java交流群691761026public static int myAtoi(String str) { int index=0,sign=1, total = 0; if(str.length()==0) return 0; while(str.charAt(index)==' '&&index<str.length()){ index++; } if(str.charAt(index)=='+'||str.charAt(index)=='-'){ sign = str.charAt(index)=='+'?1:-1; index++; } while(index<str.length()){ int digit= str.charAt(index)-'0'; if (digit<0||digit>9){ break; } if(Integer.MAX_VALUE/10 < total || Integer.MAX_VALUE/10 == total && Integer.MAX_VALUE %10 < digit){ return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE; } total = 10 * total + digit; index ++; } return total * sign; }