標籤:leetcode
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.
題意:將字串轉換為整型。這一題感覺不是很簡單,經過多次修改,終於accepted!!!
考慮的問題比較多,首先字串轉換中遇見非數字字元的處理,字串超出最大整型和最小整型怎麼處理。
開題遇到空格,用trim()去空格。
+,-號只可能在去空格後第一位。
中間遇到非數字字元,直接返回前一段字元,判斷是否有效,並轉換為整型。
代碼如下:
public int myAtoi(String str) { if(str==null)return 0; str=str.trim();//去空格 int len=str.length(); if(len==0)return 0; char signal='+'; int singalNum=0; int i=0; char ch=str.charAt(i); double result=0; while(i<len) { ch=str.charAt(i); if(ch=='-'||ch=='+')//判斷符號 { if(i!=0)return 0;//如果符號不在首位,返回0 if(ch=='-')signal='-'; }else if(ch>='0'&&ch<='9') { result=result*10+(str.charAt(i)-'0');//處理數字 }else if(ch<'0'||ch>'9')//遇到非數字字元,跳出迴圈,只計算非數字之前的合法數字字元 { break; } i++; } if(signal=='-') result=-1*result; if(result>Integer.MAX_VALUE)return Integer.MAX_VALUE; if(result<Integer.MIN_VALUE)return Integer.MIN_VALUE; return (int)result; }
[JAVA]LeetCode8 String to Integer (atoi)