本题重点提供判断回文数思路:
1.常规方法:把原数取余 后逐步乘10赋给另一数 比较他们是否相等
2.利用java函数库 stringbuilder
3.利用头尾指针法
关于最大回文数乘积:
本文采用思路为:1.从大到小判断是否为回文数 2.该数是否可以分为两个数的乘积
提供另外思路:直接两个for循环两个数求解
package edu.wust;
//两个三位数最大回文树乘积
public class work004 {
/**
*判断回文数 方法1 常规方法
* 思路:将该数逆转 再比较两数是否相当
*/
//是否为回文数
public static boolean isHui(int x){
//更简洁一些
int tap=0;
int t=x;
while(t!=0){
tap=tap*10+t%10;
t/=10;
}
// int tap=n;
// int huiN=n%10;
// while (n/10>0){
// n/=10;
// huiN=huiN*10+n%10;
// }
return tap==x;
// if(tap==huiN){
// return true;
// }
// return false;
}
/**
*判断回文数 方法2 调用java库方法
* String是不可变的,相当于常量,而StringBuffer和StringBuilder是可变的,可以对其进行增加 删除修改等操作
*StringBuffer是多线程安全的,效率要稍慢;单线程StringBuider
*/
public static boolean isHuiWen2(String x) {
return x.equals(new StringBuilder(x).reverse().toString());
}
/**
*方法3 根据头尾指针
*/
public static boolean isHuiWen3(String x){
for(int i=0;i<x.length();i++){
if(x.charAt(i)!=x.charAt(x.length()-1-i)){
return false;
}
}
return true;
}
//这个数是否可以分成2个3位数 返回分成地其中一个树
public static int isChu(int n){
for(var i=999;i>99;i--){
if(n%i==0&&n/i>99&&n/i<999){
return i;
}
}
return -1;
}
public static void main(String[] args) {
for(int i=1000000;i>10000;i--){
if(isHui(i)&&isChu(i)!=-1){
System.out.println(i);
break;
}
}
}
}
注:本文为个人学习笔记 如有侵权 请联系本人整改
另:本文内容上,如有失误,欢迎指正