Question
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。
Solution
public class Solution {
public int myAtoi(String str) {
int max=Integer.MAX_VALUE;
int min=-Integer.MIN_VALUE;
long result=0;
str=str.trim(); //返回字符串的一个副本,并去除开头和结尾的空白
int len=str.length();
if(len<1){ //若字符串长度长度小于1,则返回0
return 0;
}
int start=0;
boolean re=false;
if(str.charAt(start)=='-'||str.charAt(start)=='+'){ //标记正负号
if(str.charAt(start)=='-')
re=true;
start++;
}
for (int i = start; i < len; i++) {
char ch = str.charAt(i);
if (ch < '0' || ch > '9')
break;
result = 10 * result + (ch - '0'); //根据ASCII表的格则,把char转成int
if (!re && result > max) //如果得到的数字越界则返回最靠近的值,下同
return max;
if (re && -result < min)
return min;
}
if (re)
result = -result;
return (int) result;
}
}