平方回文数的定义是:一个数字的平方是回文数。
例如:
1 的平方是 1,是回文数,所以 1 是一个平方回文数。
2 的平方是 4,不是回文数,所以 2 不是平方回文数。
3 的平方是 9,是回文数,所以 3 是一个平方回文数。
121 的平方是 14641,是回文数,所以 121 是一个平方回文数。
代码示例:
public class SquarePalindrome {
public static void main(String[] args) {
// 输出 1000 以内的平方回文数
printSquarePalindromes(1000);
}
/**
* 打印指定范围内的平方回文数
* @param limit 上限值
*/
public static void printSquarePalindromes(int limit) {
// 遍历从 1 到 limit 的所有数字
for (int i = 1; i < limit; i++) {
// 计算当前数字的平方
int square = i * i;
// 如果平方是回文数,则打印出来
if (isPalindrome(square)) {
System.out.println(square);
}
}
}
/**
* 判断一个数字是否为回文数
* @param num 待判断的数字
* @return 是否为回文数
*/
private static boolean isPalindrome(int num) {
// 将数字转换为字符串
String numStr = String.valueOf(num);
// 使用两个指针,一个从左往右,一个从右往左遍历字符串
// 如果对应位置的字符不相同,则不是回文数
int left = 0, right = numStr.length() - 1;
while (left < right) {
if (numStr.charAt(left) != numStr.charAt(right)) {
return false;
}
left++;
right--;
}
// 遍历完成后,说明是回文数
return true;
}
}
这个算法的实现步骤如下:
- 在 printSquarePalindromes 方法中,遍历从 1 到 limit 的所有数字。
- 对于每个数字,计算它的平方。
- 调用 isPalindrome 方法,检查这个平方数是否是回文数。
- 如果是回文数,则输出这个平方数。
isPalindrome 方法是用于检查一个数字是否为回文数的通用方法,与前面提到的方法类似。
通过这个算法,我们可以在 1000 以内找到所有的平方回文数。