接下来我将会详细讲解Java中字符串转整数及myAtoi
方法的实现。
什么是字符串转整数?
字符串转整数是指将一个字符串表示的数字转换为整数类型的过程。在Java中,可以通过Integer.parseInt()
方法将字符串转换为整数。但需要注意的是,转换时存在一些限制条件,例如字符串必须全为数字等。
myAtoi方法的实现
myAtoi()
方法是LeetCode上的一道经典题目,要求实现字符串转整数功能,支持以下特性:
- 去除字符串前导空格
- 判断正负号
- 识别数字字符,将其转换为整数
- 判断整数是否超出整型范围
下面是一份可实现此要求的代码:
public static int myAtoi(String s) {
int sign = 1, base = 0, i = 0, len = s.length();
while (i < len && s.charAt(i) == ' ') i++; //去除前导空格
if (i < len && (s.charAt(i) == '+' || s.charAt(i) == '-')) { //判断正负号
sign = s.charAt(i++) == '+' ? 1 : -1;
}
while (i < len && s.charAt(i) >= '0' && s.charAt(i) <= '9') { //识别数字字符
if (base > Integer.MAX_VALUE / 10 || (base == Integer.MAX_VALUE / 10 && s.charAt(i) - '0' > 7)) { //判断整数是否超出整型范围
return (sign == 1) ? Integer.MAX_VALUE : Integer.MIN_VALUE;
}
base = 10 * base + (s.charAt(i++) - '0');
}
return base * sign;
}
示例说明
示例1
如输入"42"
,则输出42。
代码执行过程:
- 去除前导空格。
- 读取数字字符4,此时base=0
- 读取数字字符2,此时base=4*10+2=42
- 数字字符读取结束,返回42*sign=42
示例2
如输入" -42"
,则输出-42。
代码执行过程:
- 去除前导空格。
- 读取负号-,此时sign=-1,i加1。
- 读取数字字符4,此时base=0
- 读取数字字符2,此时base=-4*10-2=-42
- 数字字符读取结束,返回-42。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中字符串转整数及MyAtoi方法的实现 - Python技术站