思路如下:
1、先把开头的空格去掉
2、定义一个布尔字段判断是否是有负号,有则置false
3、遍历数字,遇到非数字则停止遍历,注意判断超界的技巧:
if(res>(Integer.MAX_VALUE-tmp)/10)
class Solution {
public int myAtoi(String str) {
str=str.trim();
if(str.length()==0){
return 0;
}
StringBuilder sb=new StringBuilder(str);
boolean positiveNumberFlag=true;
if(sb.charAt(0)=='-'){
positiveNumberFlag=false;
sb.delete(0,1);
}
else if(sb.charAt(0)=='+'){
sb.delete(0,1);
}
else if(!Character.isDigit(sb.charAt(0))){
return 0;
}
int res=0;
for(int i=0;i<sb.length();i++){
if(sb.charAt(i)>='0'&&sb.charAt(i)<='9'){
int tmp=sb.charAt(i)-'0';
if(res>(Integer.MAX_VALUE-tmp)/10){
if(!positiveNumberFlag){
return Integer.MIN_VALUE;
}
else{
return Integer.MAX_VALUE;
}
}
res=res*10+tmp;
}
else{
break;
}
}
if(!positiveNumberFlag){
res=-res;
}
return res;
}
}
原题地址:
8. 字符串转换整数 (atoi)