蓝桥杯入门训练——回文数与特殊回文数
简单的回文数

看到好几种方法啊
方法一(取巧但耗时最少):
public class Main {
public static void main(String[] args) {
for(int i=1;i<10;i++){
for(int j=0;j<10;j++){
System.out.println(""+i+j+j+i);
//或者
// System.out.printf("%d%d%d%d",i,j,j,i);
// System.out.println();
}
}
}
}方法二(从右往左读,判断是否相等)
public class Main {
public static void main(String[] args) throws Exception {
for (int i = 1000; i < 10000; i++) {
int a = i;
int b = 0;
while (a!=0) {
b = b * 10 + a % 10;
a = a / 10;
}
if (b == i) {
System.out.println(i);
}
}
}
} <br />方法三(用除法获取每一位数,然后比较)。。。。
方法四(使用char[] 来保存每一位数,然后比较)。。
public class Main {
public static void main(String[] args) {
for(int i=10000;i<1000000;i++){
int flag = 0;
String str =""+i;
char[] chars = str.toCharArray();
for(int j=0;j<chars.length/2; j++)
{
//判断第0个是否等于第n-0个,第1个是否等于第n-1个,n-( )=j
flag = j;
if(chars[j] != chars[ chars.length-1-j] )
break;
flag++;//flag用来获取位置,判断前一半是否等于后一半
}
//判断前一半是否等于后一半
if(flag>=chars.length/2)
System.out.println(str);
}
}
}感觉法一比较灵巧啊

方法一(上边的法一变形,耗时较少,约265ms,内存占用20.99MB):
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.close();
//因为回文5或6位,所以abcba或abccba
//遍历abc即可,万位不为0,即a!=0
for(int a=1;a<=9;a++)
for(int b=0;b<=9;b++)
for(int c=0;c<=9;c++)
{
//判断与输入数字相等即可
if(num==2*a+2*b+c)
System.out.println(""+a+b+c+b+a);
}
//与上同理
for(int a=1;a<=9;a++)
for(int b=0;b<=9;b++)
for(int c=0;c<=9;c++)
{
if(num==2*a+2*b+2*c)
System.out.println(""+a+b+c+c+b+a);
}
}
}方法二(上边法四的变形,耗时较长,约468ms,内存占用88.32MB):
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.close();
for(int i=10000;i<1000000;i++){
int flag = 0;
String str =""+i;
char[] chars=str.toCharArray();
for(int j=0;j<chars.length/2; j++)
{
//判断第0个是否等于第n-0个,第1个是否等于第n-1个,n-( )=j
flag = j;
if(chars[j] != chars[chars.length-1-j])
break;
flag++;//flag用来获取位置,判断前一半是否等于后一半
}
//判断前一半是否等于后一半
if(flag>=chars.length/2)
{
//如果相等再循环相加判断是否等于输入的值
int sum=0;
for(int z=0;z<chars.length;z++)
{
sum = sum + chars[z]-'0';
}
if(sum==num)
System.out.println(str);
}
}
}
} 相关推荐
seasongirl 2020-06-12
fengjing81 2020-05-07
dangyang 2019-11-16
humothetrader 2019-10-12
txlCandy 2019-03-27
uglygirl 2015-03-11
Python探路者 2019-03-02
Haopython 2019-02-08
PHP100 2019-03-28
PHP100 2019-03-28