问题描述
统计10到1000之间对称数的个数,并且打印所有对称数。所谓对称数(又称回文数)是指一整数从左往右看和从右往左看是相同的数字。例如:12321,6226。
public class Test3_1_1 { static boolean isSym(int n) { int over=n%10; int q=n; q/=10; while (q!=0) { over=over*10+q%10; q/=10; } if (n==over) return true; return false; } public static void main(String[] args) { // TODO Auto-generated method stub int count=0; for (int i=10;i<=1000;i++) { if (isSym(i)==true) { count++; System.out.println(i); } } System.out.println("count="+count); } }
优化后
public class Test3_1_2 { static void doc() { int[] a=new int[20]; int count=0; int k,i,j; for (int n=10;n<=1000;n++) { int temp=n; k=0; while (temp!=0) { a[k++]=temp%10; temp /= 10; } for (i=0,j=k-1;i<j;i++,j--) if (a[i]!=a[j]) break; if (i==k/2) { count++; System.out.println(n); } } System.out.println("count="+count); } public static void main(String[] args) { // TODO Auto-generated method stub doc(); } }
用Java特性优化后
public class Test3_1_3 { static void f() { int count=0; ok:for (int n=10;n<=1000;n++) { String s=Integer.toString(n); for (int i=0;i<s.length();i++) { if (s.charAt(i)!=s.charAt(s.length()-1-i)) continue ok; } count++; System.out.println(n); } System.out.println("count="+count); } public static void main(String[] args) { // TODO Auto-generated method stub f(); } }