題目:
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 } View Code測試代碼地址:
https://github.com/Gerrard-Feng/LeetCode/blob/master/LeetCode/src/com/gerrard/algorithm/easy/Q007.java
LeetCode題目地址:
https://leetcode.com/problems/reverse-integer/
PS:如有不正確或提高效率的方法,歡迎留言,謝謝!