实现atoi将字符串转换为整数。
提示:仔细考虑所有可能的输入情况。如果您想挑战,请不要在下面看到并问自己可能输入的情况是什么。
分析
对于此问题,应考虑以下情况:
1. null或空字符串
2.空格
3. +/-号
4.计算实际价值
5.处理最小和最大
Java解决方案
public int atoi(String str) {
if (str == null || str.length() < 1)
return 0;
//修剪空白
str = str.trim();
char flag = '+';
//检查负数或正数
int i = 0;
if (str.charAt(0) == '-') {
flag = '-';
i++;
} else if (str.charAt(0) == '+') {
i++;
}
//使用double存储结果
double result = 0;
//计算值,
while (str.length() > i && str.charAt(i) >= '0' && str.charAt(i) <= '9') {
result = result * 10 + (str.charAt(i) - '0');
i++;
}
if (flag == '-')
result = -result;
//手柄最大值和最小值
if (result > Integer.MAX_VALUE)
return Integer.MAX_VALUE;
if (result < Integer.MIN_VALUE)
return Integer.MIN_VALUE;
return (int) result;
}