-
题目:
- 回文数就是从前往后读和从后往前读都一样的数。
由两个 2 位数相乘得到的最大的回文数是 。9009 = 91*99
求由两个3位数相乘得到的最大的回文数
- 回文数就是从前往后读和从后往前读都一样的数。
-
解题思路:
- 回文数 我们肯定是进行for循环的嵌套 来进行乘积判断
- 那么乘完之后我们如何判断它是不是一个回文数呢?
- 此时我们需要将其转化成String类型,通过字符串来进行判断
- 而这里需要用到的知识点是StringBuffer类
- 首先我们需要创建一个StringBuffer对象 ,将字符串类型转化为StringBuffe类型
- 然后进行判断,通过reverse())方法来进行字符串的反转,然后在将其在转化为
- String类型,之后我们通过equles()方法来进行判断转化前和转化后的字符串是否相等。
-
知识点:String [equles()方法,用来比较字符串是否相等 ],StringBuffer [reverse()将字符串进行翻转]
-
代码解析
package practice.欧拉计划;
/**
*
* 回文数就是从前往后读和从后往前读都一样的数。
* 由两个 2 位数相乘得到的最大的回文数是 。
*9009 = 91*99
* 求由两个3位数相乘得到的最大的回文数
*/
public class 最大回文乘积 {
public static void main(String[] args) {
int max = 0;
for(int i = 100; i <= 999; i++) {
for(int j = 100; j <= 999; j++) {
if(max <= i * j && isHuiWenShu(i * j + "")) {
max = i * j;
}
}
}
System.out.println(max);
}
public static boolean isHuiWenShu(String str) {
StringBuffer sb = new StringBuffer(str);
StringBuffer s2 = sb.reverse();
String s3 = s2.toString();
boolean flag = s3.equals(str);
return flag;
}
}