public int myAtoi(String str) {
long ans = 0;
boolean flag = false;
// 先去掉前后空格
str = str.trim();
int pos = 0;
if (pos < str.length() && str.charAt(pos) == '+') {
pos++;
} else {
if (pos < str.length() && str.charAt(pos) == '-') {
flag = true;
pos++;
}
}
for (int i = pos; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isDigit(c)) {
int digit = Character.digit(c, 10);
ans = ans * 10 + digit;
} else {
break;
}
}
// 环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]
if (flag) {
if (-ans < Integer.MIN_VALUE) {
ans = Integer.MIN_VALUE;
return (int) ans;
}
return (int) -ans;
} else {
if (ans > Integer.MAX_VALUE) {
ans = Integer.MAX_VALUE;
return (int) ans;
}
}
return (int) ans;
}
LeetCode——字符串转数字
最新推荐文章于 2022-07-23 15:02:17 发布