9. Palindrome Number
2016-02-09 02:52
190 查看
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.
Solution 1
13ms 31.35%
public class Solution {
public boolean isPalindrome(int x) {
if(x < 0){
return false;
}
int devide = 1;
while(x / devide >= 10){
devide *= 10;
}
while(devide > 0){
int head = x / devide;
int tail = x % 10;
if(head != tail){
return false;
}
x = x % devide / 10;
devide /= 100;
}
return true;
}
}Solution 2 Use String
18ms 13.61%
public class Solution {
public boolean isPalindrome(int x) {
String s = String.valueOf(x);
int start = 0;
int end = s.length() - 1;
while(start < end){
if(s.charAt(start) == s.charAt(end)){
start++;
end--;
}else{
return false;
}
}
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.
Solution 1
13ms 31.35%
public class Solution {
public boolean isPalindrome(int x) {
if(x < 0){
return false;
}
int devide = 1;
while(x / devide >= 10){
devide *= 10;
}
while(devide > 0){
int head = x / devide;
int tail = x % 10;
if(head != tail){
return false;
}
x = x % devide / 10;
devide /= 100;
}
return true;
}
}Solution 2 Use String
18ms 13.61%
public class Solution {
public boolean isPalindrome(int x) {
String s = String.valueOf(x);
int start = 0;
int end = s.length() - 1;
while(start < end){
if(s.charAt(start) == s.charAt(end)){
start++;
end--;
}else{
return false;
}
}
return true;
}
}
相关文章推荐
- C# Process.Start()方法详解
- 更改jdk的默认xml解析器
- java基础总结--注解(Annotation)--注解处理器
- 【POJ 3764】The xor-longest Path 中文题意&题解&代码(C++)
- Zookeeper的安装
- And Then There Was One ,Japan LA 3882
- 1046. 划拳(15)
- 1004: 母牛的故事
- c语言:输入一个小于1000的正数,输出它的平方根,若不是小于1000的正数,重新输入
- 1047. 编程团体赛(20)
- 1048. 数字加密(20)
- JAVA XML 那些事
- 1049. 数列的片段和(20)
- Android工程师面试准备知识点
- 虽然很晚了,但是却很激动
- java 基础总结--注解(Annotation)自定义注解入门
- java基础总结--注解(Annotation)基本概念
- 算法导论例程——队列
- GemFire 入门篇2:GemFire 8.2 在CentOS & Mac OS X的安装步骤
- Swift基础语法学习总结二