什么是回文数?
回文数即一个数字从左到右读和从右到左读是同一个数。
Java实现打印所有五位数中的回文数
分析:
要打印所有五位数中的回文数,只需要判断五位数的第一位和第五位是否相同,第二位和第四位是否相同即可。以下第一种方法是按部就班遍历每一个五位数得到的,第二种方法利用了回文数的特点进行实现,第一种的方法在效率上不及第二种方法,毕竟遍历次数是第二种的10倍。因此在编程时也需要进行思维上的转变,在合适时选择执行效率更高的算法。
方法一:
遍历所有5位数(10000-99999),将整型数字转换为字符串,利用字符串的索引机制判断五位数的1、5和2、4位是否相同。
private void method1() {
//计回文数的个数
int count = 0;
//遍历所有五位数
long startTime = System.currentTimeMillis();
for (int i = 10000; i < 100000; i++) {
//将整形数字转换为字符串
// String num = String.valueOf(i);
String num = Integer.toString(i);
//判断是否为回文数
if (String.valueOf(num.charAt(0)).equals(String.valueOf(num.charAt(4))) &&
String.valueOf(num.charAt(1)).equals(String.valueOf(num.charAt(3)))) {
System.out.print(i + "\t");
count++;
if (count % 10 == 0)
System.out.println();
}
}
System.out.println("五位数中回文数的个数为:" + count);
long endTime = System.currentTimeMillis();
System.out.println("该方法执行时间为"+(endTime-startTime)+"ms");
}
方法二:
由回文数的特点,五位数的1、5和2、4位相同,可以使用拼接的方式,获取所有五位数中的回文数,使用循环遍历的方式,第一层循环为个位(对应最高位),第二层循环为十位(对应第二位),第三层循环为百位,使用输出语句输出回文数对应的字符串即可。
private void method2() {
int count = 0;
//个位为dig_1,十位为dig_2,百位为dig_3
long startTime = System.currentTimeMillis();
for (int dig_1 = 1; dig_1 < 10; dig_1++) {
for (int dig_2 = 0; dig_2 < 10; dig_2++) {
for (int dig_3 = 0; dig_3 < 10; dig_3++) {
System.out.print(dig_1 + "" + dig_2 + "" + dig_3 + "" + dig_2 + "" + dig_1 + "\t");
count++;
if (count % 10 == 0)
System.out.println();
}
}
}
System.out.println("五位数中回文数的个数为:" + count);
long endTime = System.currentTimeMillis();
System.out.println("该方法执行时间为"+(endTime-startTime)+"ms");
}
判断一个数是否为回文数
分析:
使用Scanner类输入一个数字,判断这个数字对应位上的数字是否相同即可。同理也是将输入的数字转换为字符串,再将字符串转换为字符数组,利用索引机制判断对应位上数字是否相同即可。如果输入的数字位数为奇数位,只需利用循环判断位数/2-1次就可以判断是否为回文数,如果输入的数字位数为偶数,判断位数/2次即可;当某一次判断对应位数字不相同时,即可跳出循环,判定该数字不是回文数。
//判断一个数是否为回文数
private void isPalindrome() {
Scanner input = new Scanner(System.in);
System.out.print("请输入需要判断的数字:");
int num = input.nextInt();
String s = Integer.toString(num);
char[] array = s.toCharArray();
boolean flag = true;
for (int i = 0; i < array.length / 2; i++) {
if (array[i] != array[array.length - i - 1]) {
flag = false;
System.out.println("你输入的数字不是回文数!");
break;
}
}
if (flag)
System.out.println("你输入的数字是回文数!");
}
部分内容参照
Java基础50道经典练习题(22年新版)
版权声明:本文为qq_53563793原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。