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.
解:考虑各种情况及int越界处理
public class myAtoi {
public int myAtoi(String str) {
boolean isNegative = false;
boolean flag = false;
boolean first = false;
boolean more = false;
long sum=0;
if (str!="" && !str.isEmpty()) {
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
sum = sum * 10 + str.charAt(i) - '0';
//越界处理
if (isNegative){
if (-sum < 0x80000000){
sum = 0x80000000;
more = true;
break;
}
}else{
if (sum > 0x7FFFFFFF){
sum = 0x7FFFFFFF;
more = true;
break;
}
}
first =true;
}else if (str.charAt(i) == ' ' && sum > 0){
break;
}
else if (first){
break;
} else if ((str.charAt(i) == '-' || str.charAt(i) == '+') && !flag){
first =true;
flag = true;
if (str.charAt(i) == '-' ){
isNegative = true;
}
} else if(str.charAt(i) != ' '){
break;
}
}
}
if(!more && isNegative) sum = -sum;
return (int)sum;
}
}