1. 程式人生 > >實現atoi將字串轉換為整數。

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

leetcode第八題:

仔細考慮所有可能的輸入情況。如果您想要一個挑戰,請不要在下面看到並問您自己什麼是可能的輸入情況。
在找到第一個非空白字元之前,函式首先會丟棄許多空白字元。然後,從這個字元開始,取一個可選的初始加號或減號,然後儘可能多的數字數字,並將其解釋為一個數值。
字串可以包含其他的字元,這些字元組成了整數,這些字元被忽略,對這個函式的行為沒有影響。
如果str中的非空白字元的第一個序列不是一個有效的整數,或者如果沒有這樣的序列存在,因為任何一個str是空的,或者它只包含空白字元,那麼就不會執行轉換。

如果不能執行有效的轉換,則返回零值。如果正確的值超出了可表示值的範圍,則返回INT_MAX(2147483647)或INT_MIN(-2147483648)。

示例程式碼如下,各種情況的判斷,程式碼來自Discuss:

 public 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;
	    }
歡迎加入Java交流群691761026