/**
* 通过字符串的字符数组 判断对称性
* 1221
* 0 1 2 3
* [1,2,2,1]
*/
public static boolean isPalindromePalindrome(int x){
//使用String的valueOf()方法将int类型的值变成字符串 在用toCharArray方法将字符串中的值变成char类型的数据
char[] strX =String.valueOf(x).toCharArray();
//用数组请几位与后面几位比较是否一致
for (int i=0;i<strX.length/2;i++){
//如果有一个不一致 结果为false
if (strX[i]!=strX[strX.length-1-i]){
return false;
}
}
//循环结束if没有执行证明 是true
return true;
}
//通过判断是否为回文
//StringBuilder
public static boolean isPalindrome1(int x){
String strX = String.valueOf(x);
String revX = new StringBuffer(strX).reverse().toString();
return strX.equals(revX) ;
}
public static boolean isPalindrome2(int x) {
if (x < 0) {
return false;
}
int bit = (int) Math.log10(x);
int div = (int) Math.pow(10, bit);
while (x > 0) {
/*
* 1221 获取最高位和最低位
* 1221 / 1000 = 1 (最高位) 22 / 10 = 2 (最高位)
* 1221 % 10 = 1 (最低位) 22 % 10 = 2 (最低位)
*/
int left = x / div;//
int right = x % 10;//1
System.out.println(left+"--"+right);
if (left != right) {
return false;
}
/**
* * 1221 -> 22 去掉最高位和最低位
* * 1221 % 1000 = 221 221 / 10 = 22
*/
x = (x % div) / 10;
/**
* 1000 -> 10 去掉了两位 1000 / 100 = 10
*/
div = div / 100;
}
return true;
}
回文算法
最新推荐文章于 2021-03-24 16:44:58 发布