数据结构与算法的重要性就不多说了,几乎没有一个一线互联网公司招聘任何类别的技术人员是不考算法的,程序猿们都懂的,现在最权威流行的刷题平台就是 LeetCode。闲话少讲,步入正题。
Question:
Given a 32-bit signed integer, reverse digits of an integer.
Example:
Input: 123
Output: 321
Input: -123
Output: -321
Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
Solution
以下代码皆是本人用 C++写的,觉得还不错的话别忘了点个赞哦。各位同学们如果有其他更高效解题思路还请不吝赐教,多多学习。
A1、对数循环
算法时间复杂度 O(logn),Runtime: 25 ms
,代码如下
class Solution {
public:
int reverse(int x) {
long res = 0;
while (x) {
res = res*10 + x%10;
x /= 10;
}
return (res < INT32_MIN || res > INT32_MAX) ? 0 : (int)res;
}
};
网友评论
reverse(1+reverse(INT32_MAX)) 会不会溢出?