题目:
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.
题意:
实现 atoi,将字符串转化为整数。
注意考虑所有可能的情况。
算法分析:
1. 先去掉多余的空格字符,从第一个非空格字符开始。
2. 按顺序读数字,如果出现下面三种情况则结束:
2.1 异常字符出现(异常字符跳过不计)。
2.2 数字越界(返回最接近的整数)。
2.3 字符串结束
直接看代码吧,没啥难度。
AC代码:
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)
return 0;
int start = 0;
boolean neg = false;//标示正负
if (str.charAt(start) == '-' || str.charAt(start) == '+')
{
if (str.charAt(start) == '-')
neg = 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');
if (!neg && result > max)// 超出边界时,直接返回边界值
return max;
if (neg && -result < min)
return min;
}
if (neg)
result = -result;
return (int) result;
}
}