每日一练之Palindrome Number【LeetCode No.9】—判断是否为回文数
2017-04-19 10:55
489 查看
Determine whether an integer is a palindrome. Do this without extra space.
click to show spoilers.
Some hints:
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.
//分析:判断一个整数是否为回文数,但题目要求不能使用额外的空间,使用数字翻转法也要考虑是否会溢出的问题,所以选择更通用的方法-数字位判断法,先判断第一位和最后一位是否相等,相等则继续判断,否则直接返回false.
数字翻转法(可能会溢出):
public class Solution {
public boolean isPalindrome(int x) {
int a = x, r = 0;
if (x < 0) return false;
while (a > 0) {
r = r*10 + a%10;
a = a / 10;
}
return r == x;
}
}
数字位判断法(更通用):
class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
int div=1;
while (x/div>=10){
div*=10;}
while(x!=0){
int first_wei=x/div;
int last_wei=x%10;
if(first_wei!=last_wei) return false;
x=x%div/10;
div/=100;
}
return true;
}
};
click to show spoilers.
Some hints:
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.
//分析:判断一个整数是否为回文数,但题目要求不能使用额外的空间,使用数字翻转法也要考虑是否会溢出的问题,所以选择更通用的方法-数字位判断法,先判断第一位和最后一位是否相等,相等则继续判断,否则直接返回false.
数字翻转法(可能会溢出):
public class Solution {
public boolean isPalindrome(int x) {
int a = x, r = 0;
if (x < 0) return false;
while (a > 0) {
r = r*10 + a%10;
a = a / 10;
}
return r == x;
}
}
数字位判断法(更通用):
class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
int div=1;
while (x/div>=10){
div*=10;}
while(x!=0){
int first_wei=x/div;
int last_wei=x%10;
if(first_wei!=last_wei) return false;
x=x%div/10;
div/=100;
}
return true;
}
};
相关文章推荐
- Palindrome Number leetcode 判断一个整数是否是回文
- 判断回文数 (Palindrome Number<from LeetCode>)
- leetcode Palindrome Number (判断整数是否为回文)
- leetcode Palindrome Number 回文数
- Leetcode 9 Palindrome Number 判断一个数是否为回文数
- LeetCode 9. Palindrome Number 判断是否为回文数
- LeetCode Valid Number(判断字符串是否是合法的数字表示 )
- LeetCode234_PalindromeLinkedList (判断是否为回文链表) Java题解
- Palindrome Linked List - LeetCode 判断一个链表是否是回文结构
- [C++]LeetCode 9: Palindrome Number(判断整数是否是回文数)
- leetcode之数值计算类-----9. Palindrome Number(判断一个数是否为回文数)
- (LeetCode)Palindrome Number -- 判断回文数
- LeetCode OJ Palindrome Number(回文数)
- LeetCode—Palindrome Number 数字是否是回文数字
- 判断一个整数是否为回文数 Check if a number is palindrome
- palindrome_number判断int是否是回文
- [分析总结:leetcode-Palindrome Linked List] 给定单链表,判断链表是否为回文。
- LeetCode之Palindrome Number(回文数)
- leetcode(valid-palindrome)判断字符串是否是对称
- 【LeetCode题解】9_回文数(Palindrome-Number)