Palindrome Number leetcode 判断一个整数是否是回文
2015-01-19 16:08
253 查看
Determine whether an integer is a palindrome. Do this without extra space.
判断一个数是否是回文,首先的想法是将这个数字转变成string建立首尾指针进行求解,但考虑到题目要求不能有其他空间的要求我们对算法做进一步优化。给定一个数如果是负数绝对不是回文,如果是正整数,判断这个数是几位数,判断出这个数的位数之后通过除法和取余运算获得对称位数的数字判断是否相等即可。
看到网上还有一种解法即,获得这个数的中间数字之后将这个数分为前后两部分,然后逐次对10取余。
判断一个数是否是回文,首先的想法是将这个数字转变成string建立首尾指针进行求解,但考虑到题目要求不能有其他空间的要求我们对算法做进一步优化。给定一个数如果是负数绝对不是回文,如果是正整数,判断这个数是几位数,判断出这个数的位数之后通过除法和取余运算获得对称位数的数字判断是否相等即可。
public class Solution { public boolean isPalindrome(int x) { if (x<0) return false; int count = 0; int temp = x; while (temp>0){ // 确定有几位数 temp = temp/10; ++count; } for (int i=0;i<count/2;i++){ int a =(int)(x/Math.pow(10,count-i-1)); a = a%10; int b = (int)(x%Math.pow(10,i+1)); b = (int)(b/Math.pow(10,i)); if (a!=b) return false; } return true; } }
看到网上还有一种解法即,获得这个数的中间数字之后将这个数分为前后两部分,然后逐次对10取余。
class Solution { public: bool isPalindrome(int x) { // Start typing your C/C++ solution below // DO NOT write int main() function if(x < 0) return false; int div = 1; while(x/10 >= div){ // get large division div *= 10; } while(x > 9){ int high = x / div; // left digit int low = x % 10; // right digit if(high != low){ return false; } x = (x % div) / 10; // get number between first and last div /= 100; } return true; } };
相关文章推荐
- leetcode Palindrome Number (判断整数是否为回文)
- 判断一个整数是否为回文数 Check if a number is palindrome
- leetcode之O(1)空间复杂度判断一个整数是否是回文整数
- Palindrome Linked List - LeetCode 判断一个链表是否是回文结构
- Palindrome Number (判定一个整数是否是回文)
- leetcode——Palindrome Number 判断整数数字是否为回文(AC)
- 输入一个整数,判断该整数是否是回文!
- 输入一个整数判断是否是回文
- Palindrome Number 判断一个数字是否是回文数字@LeetCode
- 判断一个整数是否为回文数
- 如何判断一个单向链表是否为回文链表(Palindrome Linked List)
- 【华为面试题】给定一个数字(整数),判断它是否回文
- 判断一个整数是否是回文数 Palindrome Number
- 判断一个整数是否是回文数
- palindrome_number判断int是否是回文
- Leetcode 第8题 判断一个整数是否为回文串
- 判断一个字符串、整数是否为回文字符串或回文数
- 判断一个整数是否为回文数
- LeetCode--判断一个十进制数字是否为回文
- leetcode 9 给一个int类型的数字,判断是否是回文数