题目:
Reverse digits of an integer.
Example1:
x = 123, return 321
Example2:
x = -123, return -321
官方难度:
Easy
翻译:
倒转整数。
例子:
输入123,返回321;输入-123,返回-321。
思路:
1.既然是倒转整数,拿倒转字符串的思路虽然能做,但应该不是原题想要的结果,而且效率应该也会差一点。
2.优先获得输入整数的最高位数,使用取余的方式乘以10的对应次方,循环累加。
解题中可能遇到的困难:
1.负数需要转成正数来特殊处理。
解题代码:
1 private static int method(int number) { 2 // 正负的标志位 3 int flag = 1; 4 // 考虑负数转化 5 if (number <= 0) { 6 number = -number; 7 flag = -1; 8 } 9 int sum = 0; 10 // 先获取最高位,准备一个副本 11 int maxLevel = 0; 12 int temp = number; 13 while (temp > 0) { 14 temp /= 10; 15 maxLevel++; 16 } 17 // 取余数,乘以因子累加 18 while (number > 0) { 19 // 要先减maxLevel 20 sum += (number % 10) * Math.pow(10, --maxLevel); 21 number /= 10; 22 } 23 return sum * flag; 24 }
测试代码地址:
https://github.com/Gerrard-Feng/LeetCode/blob/master/LeetCode/src/com/gerrard/algorithm/easy/Q007.java
LeetCode题目地址:
https://leetcode.com/problems/reverse-integer/
PS:如有不正确或提高效率的方法,欢迎留言,谢谢!
时间: 2024-10-07 15:47:21