簡單的回文數
看到好幾種方法啊
方法一(取巧但耗時最少):
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); } } } }
方法三(用除法獲取每一位數,然后比較)。。。。
方法四(使用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); } } } }