(no title)
2024.07.12
wlg
℃
Java算法
LeetCode
翻转整数
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
示例 2:
如果反转后整数溢出那么就返回 0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class ReverseInteger { public static void main(String[] args) { int x = 123; int y = -123; System.out.println(reverse(x)); System.out.println(reverse(y)); }
public static int reverse(int x) { int rev = 0; while (x != 0) { int pop = x % 10; x /= 10;
if (rev > Integer.MAX_VALUE / 10 || (rev == Integer.MAX_VALUE / 10 && pop > Integer.MAX_VALUE % 10)) return 0; if (rev < Integer.MIN_VALUE / 10 || (rev == Integer.MIN_VALUE / 10 && pop < Integer.MIN_VALUE % 10)) return 0;
rev = rev * 10 + pop; } return rev; } }
|
这道题是 LeetCode 的第 7 题,很好的考察了 int 的基本数据类型、取余和除法运算符,以及 if 和 while 语句的使用。
字符串转换整数
请你来实现一个 parseInt 方法,使其能将字符串转换成整数。
示例 1(正数):
示例 2(带空格的负数):
示例 3(带非数字的字符):
1 2
| 输入: "4193 with words" 输出: 4193
|
示例 4(超出 int 范围):
1 2
| 输入: "91283472332" 输出: 2147483647
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| public class StringToInteger { public static void main(String[] args) { String str1 = "42"; String str2 = " -42"; String str3 = "4193 with words"; String str4 = "91283472332"; System.out.println(parseInt(str1)); System.out.println(parseInt(str2)); System.out.println(parseInt(str3)); System.out.println(parseInt(str4)); }
public static int parseInt(String str) { int index = 0; int sign = 1; int total = 0;
while (index < str.length() && str.charAt(index) == ' ') index++;
if (index < str.length() && (str.charAt(index) == '+' || str.charAt(index) == '-')) { sign = str.charAt(index) == '+' ? 1 : -1; index++; }
while (index < str.length()) { int digit = str.charAt(index) - '0'; if (digit < 0 || digit > 9) break; if (total > Integer.MAX_VALUE / 10 || (total == Integer.MAX_VALUE / 10 && digit > Integer.MAX_VALUE % 10)) { return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE; } total = total * 10 + digit; index++; } return total * sign; } }
|
这道题是 LeetCode 的第 8 题,很好的字符与整数之间的转换,以及 if 和 while 语句的使用。超纲的内容就是字符串的处理,比如说去空格(trim()
),比如说取字符(charAt()
)。