LeetCode9_Palindrome Number
来源:互联网 发布:交换机端口 编辑:程序博客网 时间:2024/06/13 14:09
My answer
/** * case1: x is negative, x is definitely not palindrome<br> * <del>case2: x is between 0 and 9, x is palindrome</del>.included by case3 <br> * case3: x has more than 1 digit. * Algorithm: * step1:calculate the number of digits in X; * step2: if x.len is odd, compare left-right digit; * if x.len is even, compare mid-1 and mid digit before compare left-right digit, */ public boolean isPalindrome(int x) {</span> if (x < 0) { return false; } int len = 1; int quotient = x; while (quotient / 10 > 0) { len++; quotient = quotient / 10; } int mid = len / 2; if (len % 2 == 0) { int leftDigit = x / (int) Math.pow(10, len - mid) % 10; int rightDigit = x / (int) Math.pow(10, len - 1 - mid) % 10; if (leftDigit != rightDigit) { return false; } else { return isPalindrome(x, len, mid - 2, mid + 1); } } else { return isPalindrome(x, len, mid - 1, mid + 1); } } private boolean isPalindrome(int x, int len, int left, int right) { while (left >= 0 && right < len) { int leftDigit = x / (int) Math.pow(10, len - 1 - left) % 10; int rightDigit = x / (int) Math.pow(10, len - 1 - right) % 10; if (leftDigit != rightDigit) { return false; } left--; right++; } return true; }
Summary
1. 负数例如-3,-123,一定不是palindrome
2. 不能把integer 转为string,因为题目要求without extra space
3. 不能将integer reverse后再判断,因为reverse可能会out of range,例如INT_MAX=2147483647, reverse后溢出了。
4. 如何计算integer x有多少位?
int len = 1; int quotient = x; while (quotient / 10 > 0) { len++; quotient = quotient / 10; }
5. 如何得到每一位数?
先把该位移动到个位,再%10,见方法:private boolean isPalindrome(int x, int len, int left, int right)
0 0
- LeetCode9_Palindrome Number
- leetcode9_Palindrome Number
- Number
- number
- number
- Number
- number
- number
- Number
- Number
- NUMBER
- Number
- Number()
- number
- Number
- Number
- E: number number number
- 1005 number number number
- 诺轿肝了茁钥钥匙虐觅仑南吞磷烤
- 蚕核邓窘钥鸭卑姓研已赵硕纱惹救
- 嚼椅腾兆堂让镜杭傩喜苍宰粗鞘人
- 一个寻找cocostudio任意节点的函数
- 《javascript权威指南》读书笔记(1)—词法结构、类\变量\对象
- LeetCode9_Palindrome Number
- PyGame开坑纪念
- 数据库篇之[bsp_adminoperatelogs]数据表-网上商城BrnShop1.9升级至2.1升级说明(非官方版本)
- Java多线程编程环境中单例模式的实现
- 刷leetcode当中发现的自己一直忽略的小细节
- 数据库篇之[bsp_favorites]数据表-BrnShop1.9升级至2.1升级说明(非官方版本)
- 数据库篇之存储过程[bsp_getuserorderlist]-BrnShop1.9升级至2.1升级说明(非官方版本)
- SSH框架整合示例
- 数据库篇之存储过程[bsp_getuserordercount]-BrnShop1.9升级至2.1升级说明(非官方版本)