題目簡單的不行,就是將字符串轉換成int類型的數字,但是弄了一個小時才弄出來,太多的邊界情況,比如空串和null值不用說,前后有空格,超出int類型最大和最小范圍就返回最大或最小,最前面有+-號怎么處理,字符串中如果有字符,從第一個字符開始算,前面不是字母的變成數字,遇到字母停止,如果第一個為字母直接返回0。附上代碼:
public int myAtoi(String str) {
if(str==null || str.trim().equals(""))return 0;
str=str.trim();
boolean fu=false;
if(str.charAt(0)=='+' && str.length()>1){
str=str.substring(1, str.length());
}else{
if(str.charAt(0)=='-'&& str.length()>1) {
str=str.substring(1, str.length());
fu=true;
}
}
String result="";
for(int i=0;i<str.length();i++) {
if(!(str.charAt(i)>47 && str.charAt(i)<58)) {
if(i==0)return 0;
break;
}
result+=str.charAt(i);
}
if(fu) {
if(result.length()>10 || -Long.parseLong(result)<=Integer.MIN_VALUE) {
return Integer.MIN_VALUE;
}else {
return -Integer.parseInt(result);
}
}else {
if(result.length()>10 || Long.parseLong(result)>=Integer.MAX_VALUE) {
return Integer.MAX_VALUE;
}else {
return Integer.parseInt(result);
}
}
}