Leetcode 第8题 字符串转换整数(atoi)
今天写道力扣第八题 看到有评论说java的判断溢出不容易, 便自己实现了这个代码, 用力扣上的判断方式
java的Integer类有Integer.Max和Integer.Min属性, 我用的当前数乘以十加上个位判断是否溢出
1.判断上溢出:(sum > Integer.Max / 10 || (sum == Integer.Max/10 && pop > 7))这里pop是要加上的个位的数。
2.判断下溢出:(sum < Integer.Max / 10 || (sum == Integer.Max/10 && pop < -8))
// An highlighted block
public static int myAtoi(String str) {
if (str == null || str.length() == 0) {
return 0;
}
char[] arr = str.toCharArray();
int flag = 1;
int i = 0;
while (i < arr.length && arr[i] == ' ') {
i++;
}
if (i == arr.length) {
return 0;
}
if (arr[i] == '-' || arr[i] == '+') {
if (arr[i] == '-') {
flag = -1;
}
i++;
}
int sum = 0;
for (; i < arr.length && arr[i] >= '0' && arr[i] <= '9'; i++) {
if (flag < 0) {
if (sum < Integer.MIN_VALUE / 10 || (sum == Integer.MIN_VALUE / 10 && arr[i] - '0' > 8)) {
return Integer.MIN_VALUE;
}
int tem = arr[i] - '0';
sum = (sum * 10 - tem);
if (sum > 0) {
sum = 0 - sum;
}
} else {
if (sum > Integer.MAX_VALUE / 10 || (sum == Integer.MAX_VALUE / 10 && arr[i] - '0' > 7)) {
return Integer.MAX_VALUE;
}
int tem = arr[i] - '0';
sum = (sum * 10 + tem);
}
}
return sum;
}
本文详细解析了LeetCode第8题字符串转换整数(atoi)的Java实现方法,并针对整数溢出问题提供了具体解决方案。通过示例代码展示了如何有效判断并处理正负整数的边界情况。
&spm=1001.2101.3001.5002&articleId=89047821&d=1&t=3&u=0346f52966344960bbee90fe4e227bce)
843

被折叠的 条评论
为什么被折叠?



