LeetCode解题-#7-Reverse Integer
2017-11-11 22:09
423 查看
题目描述:
给一个32位有符号整数,按位反转。
如果溢出则返回0。
比如:
Input: 123
Output: 321
Input: -123
Output: -321
Input: 120
Output: 21
思路:
第一反应是转换成 string,再反转,但这肯定不是最高效的。
可以从右向左按位逐个取出数字,保存进一个新的数字。
比如: 1234-> 123-[4] -> 12-[43] -> 1-[432] -> [4321]
有点像反转链表的思路,不过按位取出数字的过程要麻烦一些。
实现:
给一个32位有符号整数,按位反转。
如果溢出则返回0。
比如:
Input: 123
Output: 321
Input: -123
Output: -321
Input: 120
Output: 21
思路:
第一反应是转换成 string,再反转,但这肯定不是最高效的。
可以从右向左按位逐个取出数字,保存进一个新的数字。
比如: 1234-> 123-[4] -> 12-[43] -> 1-[432] -> [4321]
有点像反转链表的思路,不过按位取出数字的过程要麻烦一些。
实现:
public class Solution { public int Reverse(int x) { int result = 0; while(x != 0) { int tail = x % 10; //对10求余得到末位数字 int newResult = result * 10 + tail; //新结果*10进位,然后把上一步得到的末位数字插入新结果的后面 if((newResult-tail) / 10 != result) { //如果上一步反算不成立,则说明 stack overflow return 0; } result = newResult; x /= 10; //除以10相当于原数字舍去末位数字 } return result; } }
相关文章推荐
- LeetCode解题报告---Reverse Integer
- [Leetcode]解题文档- Reverse Integer
- [LeetCode 解题报告] Reverse Integer
- LeetCode解题报告—— Reverse Linked List II & Restore IP Addresses & Unique Binary Search Trees II
- [Leetcode] 298. Binary Tree Longest Consecutive Sequence 解题报告
- LeetCode 94. Binary Tree Inorder Traversal 解题报告
- LeetCode 解题报告 Maximum Product Subarray
- 【LeetCode】57.Insert Interval(Medium)解题报告
- LeetCode: Distinct Subsequences 解题报告
- 【LeetCode】447.Number of Boomerangs(Easy)解题报告
- LeetCode解题报告—— Unique Binary Search Trees & Binary Tree Level Order Traversal & Binary Tree Zigzag Level Order Traversal
- [leetcode javascript解题]Valid Parentheses
- LeetCode 384. Shuffle an Array 解题报告
- leetcode解题笔记:Largest Number
- LeetCode解题报告--Valid Parentheses
- [leetcode] 329. Longest Increasing Path in a Matrix 解题报告
- leetCode 84.Largest Rectangle in Histogram (最大矩形直方图) 解题思路和方法
- 【LeetCode】78. Subsets 解题报告
- [leetcode] 454. 4Sum II 解题报告
- Leetcode 81. Search in Rotated Sorted Array II 旋转数组查询2 解题报告