敬请关注博客,后期不断更新优质博文,谢谢
每天坚持刷leetcode----回文数字
package leetcode.T009_PalindromeNumber;
/**
* @Title: Solution.java
* @Package leetcode.T009_PalindromeNumber
* @Description: *******
* @author zhouzhixiang
* @date 2017-6-3 下午10:41:29
* @version V1.0
*/
public class Solution {
/**
* <pre>
* 原题
* Determine whether an integer is a palindrome. Do this without extra space.
*
* 题目大意
* 判断一个数字是否是回访字数,不要使用额外的空间。
*
* 解题思路
* 为了不使用额外的空间,参考了其它的解决,那些解法看起来在isPalindrome方法中没有使用额外参数,
* 但是却使用了方法调用,这个比一个整数消耗的空间更多 ,并没有达到题目的要求,是假的实现,
* 所以本题依然采用一个额外的空间进行实现。
* 首先,负数不是回文数字,其次对数字进行逆转,123变成321这样,如果变换后的数字相等说明是回文数字。
* </pre>
*
* @param x
* @return
*/
public static void main(String[] args) {
// System.out.println(new Solution().isPalindrome(-1211));
System.out.println(new Solution().isPlindrome2(1111101));
}
// 参考
public boolean isPlindrome2(int x){
// 如果为负数
if(x<0){
return false;
}
// 防止数字逆转后的值溢出,采用long
long reverse = 0;
int tmp = x;
while(tmp!=0){
reverse = reverse*10 + tmp%10;
tmp /= 10;
}
return x == reverse;
}
/**
* @Title: isPalindrome
* @Description: daniel
* @param @param x
* @param @return
* @return boolean
* @throws
*/
public boolean isPalindrome(int x){
boolean flag = false;
int len = 0;
char sFirst = ' ';
char sLast = ' ';
// 如果为负数,则直接返回false
if(x<0){
return flag;
}
// 转成字符串
String str = String.valueOf(x);
len = str.length();
if(len>0){
for(int i=0; i<len; i++){
sFirst = str.charAt(i);
sLast = str.charAt(len-i-1);
// 判断后一位和对应的前一位是否相等
if(sFirst == sLast){
flag = true;
}else{
flag = false;
return flag;
}
}
if(flag){
return flag;
}
}
return flag;
}
}
欢迎加入Java猿社区