LeetCode 7. Reverse Integer
来源:互联网 发布:虚拟拍照软件 编辑:程序博客网 时间:2024/06/14 07:47
本题出处 来自LeetCode Algorithms中的一道Easy的题
原题目:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
看完题目,可以知道这道题目要让我们做的事情其实很简单。将输入的整数的各位逆序一下。例如,输入了数字”123”,原来排在最高位的数字”1”,经过我们的算法后,被排在了最低位;排在次高位的数字”2”,经过我们的算法后,被排在了次低位……聪明的你肯定知道我们到底要做些什么了。
看看有哪些是可能出现问题的地方。题目中特地说了如果出现溢出(overflow),返回结果0,这提示我们,要检测溢出现象的发生。另外,我们再考虑当输入是”900”的时候,应该reverse成多少呢? 答案要求我们reverse成”9”,并非”009”,这告诉我们,做法不可以是将输入当作纯字符,并通过字符串的倒序来完成这个任务。
我们试着模拟人处理这个问题的流程,以输入为”901”为例。
我们会首先查看输入的最高位”9”,并将”9”记录下来,写在结果的最低位;
然后接着查看输入的次高位”0”,发现是特殊的数字”0”,那要不要将”0”写到结果中? 我想你一定会写的,因为知道这个是需要的。为什么是需要的? 因为”0”之后,需要往结果的更高位补充的非零数字”1”。 那么, 这个”为什么需要”,就是判断条件的来源了。
最后处理输入的最低位”1”,将它写在结果的最高位。
那么,经过人的模拟,能不能将这个过程抽象为可执行的代码了呢? 这部分就让读者自行尝试了。
下面我要说说另外一种简洁直接的解法了。
无论是使用哪种方法解决这个问题,必不可少的一步,都将是从输入中分离出各位的数字。例如输入”901”,必定要将”9”、”0”、”1”分离出来。我们会怎样分离呢? 可以通过对输入a 取模(对10取模)的方式得到最低位,然后再将a /= 10,将已经得到的最低位去掉。重复这个操作,就可以将各位数字都分离出来。
那可以如何构造我们的结果,当记录好了已分离的各位的数字。可以将获得的第一个数字”1”先加入结果b中,然后b乘以10,然后将获得的第二个数字”0”也加入到b中,再将结果b乘以10。重复这样的操作。(构造结果的操作其实是受到了分离数字时的启发,是类似的逆过程)。
分析到了这里,思路已经大体清晰了,接下来就是coding的问题了。
int reverse(int x) { long long int ret = 0; while (x != 0) { ret *= 10; ret += x%10; x /= 10; } if (ret > INT_MAX || ret < INT_MIN) return 0; return ret; }
复杂度的分析:
1.时间复杂度:O(n),n位输入的数字的位数
2.空间复杂度:O(1)
- [LeetCode]7.Reverse Integer
- LeetCode 7. Reverse Integer
- LeetCode --- 7. Reverse Integer
- LeetCode 7.Reverse Integer
- [Leetcode] 7. Reverse Integer
- [Leetcode]7.Reverse Integer
- LeetCode 7.Reverse integer
- [LeetCode] 7.Reverse Integer
- 7. Reverse Integer LeetCode
- leetcode 7. Reverse Integer
- leetcode 7. Reverse Integer
- leetcode 7. Reverse Integer
- Leetcode 7. Reverse Integer
- 【LeetCode】7.Reverse Integer
- LeetCode 7. Reverse Integer
- LeetCode *** 7. Reverse Integer
- LeetCode 7. Reverse Integer
- LeetCode-7. Reverse Integer
- Ubuntu新手入门全攻略
- Android AsyncTask 源码解析
- C语言笔记——gets_s, fgets, puts函数
- Tensorflow-get_variable、Variable
- oracle表查询(六)
- LeetCode 7. Reverse Integer
- 简单介绍Java中Comparable和Comparator
- JSP基础(五)——JSP的指令元素
- B树
- hdu 6215 Brute Force Sorting
- Dell r510如何做Raid 0 和Radi 5
- React Native开发移动客户端
- 获取数据库连接的三种方式(已经注册驱动)
- Mysql 字符集的设置和修改