【LeetCode從零單排】No.8 String to Integer (喪心病狂的一道題)

李博Garvin發表於2015-02-07

題目

       題目很簡單,就是寫一個函式把string轉換成int,但是通過率只有可憐的11%,難點是要考慮所有情況,特別是int溢位邊界,反正我是寫了2個小時還沒解決,先放到這,有空接著搞,現在應該還有最後一個bug。

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.


程式碼

public class Solution {
    public int atoi(String str) {
  		String num_str="";
        char[] str_char=str.toCharArray();
        char[] sympo="-+".toCharArray();
        boolean abs=true;
        for(int i=0;i<str.length();i++){
        	 if(str_char[i]==sympo[0] ||str_char[i]==sympo[1]){
        		 if(!Character.isDigit(str_char[i+1])){
        			 return 0;
        		 }
        		 if(str_char[i]==sympo[0]){
        			 abs=false;
        		 }
        	 }
      	  if(Character.isDigit(str_char[i])){       		 
   	   	      num_str+=String.valueOf(str_char[i]);      	   	 
   	        }
      	  else{
      		  if(num_str.length()!=0){
      			  break;
      		  }
      	  }
//       	  if(Character.isDigit(str_char[i])){       		 
//       	   	 num_str+=String.valueOf(str_char[i]);      	   	 
//       	    }
       	 if(num_str!=""){
       	   if(Math.abs(Integer.parseInt(num_str))>=Integer.MAX_VALUE / 10){
  		      return Integer.MAX_VALUE;
  	          }
       	   }
       }
        if(num_str!=""){
        	 if(abs){
        		 return Integer.parseInt(num_str);
        		 }
        	 else{
        		 return -Integer.parseInt(num_str);
        	 }
	    }
        else{
        	   return 0;
        
  }
    
 }
    
}



/********************************

* 本文來自部落格  “李博Garvin“

* 轉載請標明出處:http://blog.csdn.net/buptgshengod

******************************************/


相關文章