题目简单的不行,就是将字符串转换成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);
}
}
}
网友评论