题目描述
题目描述
这里有两种方法去实现
1、转换成字符串的方法:直接对比第i位和第len-1-i位的值
2、得到反转后的数字,然后比较两个数字是否相等
首先第一种方法的java实现如下:
package cz;
/*
日期:2022/01/10
作者:城主
题目:
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
这里有两种方法去实现
1、转换成字符串的方法:直接对比第i位和第len-1-i位的值
2、得到反转后的数字,然后比较两个数字是否相等
*/
public class huiwennum_0110 {
public static void main(String[] args) {
int num=12321;
System.out.println(isPalindrome(num));
}
public static boolean isPalindrome(int x) {
String str=String.valueOf(x);
char [] ch_te=str.toCharArray();
for(int i=0;i<str.length()/2;i++)
{
if(ch_te[i]!=ch_te[str.length()-1-i])
{
return false;
}
}
return true;
}
}
提交通过。
以下使用第二种方法
以下为Java实现;
public boolean isPalindrome(int x) {
int num=0;
int temp=x;
while(x>0)
{
num=num*10+x%10;
x=x/10;
}
if(num==temp)
{
return true;
}
return false;
}
第二种方法比我想象中的要快一点。
提交通过,以下为评估。
最后使用python进行代码的编写
以下为第一种方法的实现
:type x: int
:rtype: bool
"""
temp = str(x)
for i in range(len(temp)):
if temp[i] != temp[len(temp)-1-i]:
return False
return True
提交通过,但相对而言,性能跟不上java
以下为第二种方法的实现
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
rev = 0
temp = x
while x > 0:
rev = rev * 10 + x % 10
x = x / 10
if rev == temp:
return True
return False
性能没有用java的理想