LeetCode Palindrome Number && Reverse Integer 解法集合
来源:互联网 发布:网络作家进入中国作协 编辑:程序博客网 时间:2024/05/30 04:39
1. Reverse Integer
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
click to show spoilers.
Here are some good questions to ask before coding. Bonus points for you if you have already thought through this!
If the integer's last digit is 0, what should the output be? ie, cases such as 10, 100.
Did you notice that the reversed integer might overflow? Assume the input is a 32-bit integer, then the reverse of 1000000003 overflows. How should you handle such cases?
Throw an exception? Good, but what if throwing an exception is not an option? You would then have to re-design the function (ie, add an extra parameter).
int reverse(int x) { int result = 0; while (x) { result = result*10 + x%10; x /= 10; } return result; }
12.9update:之前想复杂了,不应该那样处理,更新一下,使用long long就好了,如下程序:
考虑:
1 溢出
2 + -
3 1000, 10等尾部为零的情况
答案:
1 long long 处理了
2 无需要处理
3 无需要处理
int reverse(int x){long long res = 0;while (x){res = res*10 + x%10;x /= 10;}if (res >= INT_MAX) return INT_MAX;if (res <= INT_MIN) return INT_MIN;return res;}
2 Palindrome Number
Determine whether an integer is a palindrome. Do this without extra space.
click to show spoilers.
Could negative integers be palindromes? (ie, -1)
If you are thinking of converting the integer to string, note the restriction of using extra space.
You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?
There is a more generic way of solving this problem.
去掉最高位额外处理可能溢出的情况,然后转置整数比较的程序:
class Solution {public:bool isPalindrome(int x) {if(x<0) return false;else if(x<10) return true;int y = 0;int a = x%10;x /= 10;while (x >= 10){if(x%10 != 0)y = 10*y + x%10;x/=10;}if(a != x) return false;x=y;int z = 0;while (y){z = 10*z + y%10;y/=10;}if(z != x) return false;return true;}};
最高位和最小位分别比较的程序:
bool isPalindrome(int x) {if (x < 0) return false;int div = 1;while (x / div >= 10) {div *= 10;} while (x != 0) {int l = x / div;int r = x % 10;if (l != r) return false;x = (x % div) / 10;div /= 100;}return true;}
另辟蹊径递归程序:
bool isPalindrome(int x, int &y) {if (x < 0) return false;if (x == 0) return true;if (isPalindrome(x/10, y) && (x%10 == y%10)) {y /= 10;return true;} else {return false;}}bool isPalindrome(int x) {return isPalindrome(x, x);}
截开高位数和低位数的程序:
bool isPalindrome(int x) {if(x < 0) return false;int a = x, b = 0;while(a > b) {b = b * 10 + a % 10;a /= 10;}if(a == 0) return (x == b);return (a == b) || a == (b / 10);}
部分程序出处:LeetCode论坛
//2014-1-24 updateclass Solution124 {public:bool isPalindrome(int x) {int y = 0;if (x<0) return false;if (x<10) return true;if (x%10 ==0 && x%10%10 == 0) return false;while (x > y){y = y*10 + x%10;x /= 10;}if (x == y || x == y/10) return true;return false;}};
bool isPalindrome(int x) {if (x<0) return false;//特殊情况1if (x<10) return true;//特殊情况2if (x%10 == 0) return false;//特殊情况3:尾数为零的肯定不是Palindromeint y = 0;while (x > y){y = y*10 + x%10;x /= 10;}return x == y || x == y/10;}
- LeetCode Palindrome Number && Reverse Integer 解法集合
- [LeetCode] Reverse Integer、Palindrome Number
- [Leetcode]Palindrome Number & reverse integer
- Reverse Integer && Palindrome Number-LeetCode
- leetcode Reverse Integer & Palindrome Number
- LeetCode: Reverse Integer,Palindrome Number
- leetcode 7&9 : Reverse Integer & Palindrome Number
- LeetCode 7.Reverse Integer/LeetCode 9.Palindrome Number
- Reverse Integer和Palindrome Number
- leetcode: Reverse Integer 菜鸟解法
- [LeetCode]:Reverse Integer(Only两类解法)
- LeetCode7~9 Reverse Integer/String to Integer (atoi)/Palindrome Number
- 数组——reverse integer和 palindrome-number
- Excel Sheet Column Number && Roman to Integer && Integer to Roman && Reverse Integer && Palindrome N
- LeetCode题解:Reverse Integer (3种解法)
- Reverse Integer问题及解法
- [LeetCode] Number of 1 Bits & Reverse Integer - 整数问题系列
- Palindrome Number问题及解法
- C++中extern “C”含义深层探索
- Rsync安装与配置
- 内联函数
- 对中级 Linux 用户非常有用的 20 个命令
- 65. XPages自定义控件(三)高级搜索之三
- LeetCode Palindrome Number && Reverse Integer 解法集合
- Linux查看端口占用情况,以及已启动的进程
- Ubuntu12.04网络配置
- Eclipse_tab用法
- Linux c/c++ debug和release
- 接触IOS开发
- 控制寄存器CR0,CR1,CR2,CR3
- Oracle Logminer 做数据恢复
- uva 301 Transportation