首页 > 代码库 > LeetCode 9. Palindrome Number
LeetCode 9. Palindrome Number
Determine whether an integer is a palindrome. Do this without extra space.
判断一个数是否是回文数,不能用额外的空间
我第一次做的时候,没有考虑到不能用额外的空间(空间复杂度为(n)),用了一个字符串来保存数字,而且题目的设定是
负数不是回文数
class Solution {public: bool isPalindrome(int x) { string s; if(x<0)return false; while (x) { s.push_back(x % 10+48); x /= 10; } for (int i = 0;i < (int(s.size()) - 1 - i);++i) { if (s[i] != s[s.size() - 1 - i])return false; } return true; }};
下面是改进的方法:空间复杂度为O(1)
class Solution {public: bool isPalindrome(int x) { if (x < 0)return false; if(0==x)return true; int div = 1000000000; int cnt=10; for (;!(x / div);div /= 10,--cnt); cnt=cnt/2; while (x&&cnt--) { if (x / div%10 != x % 10)return false; div /= 100; x /= 10; if(x<10)return true; } return true; }};
LeetCode 9. Palindrome Number
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。