public static int count(int x) {
int count = 0; //设置一个统计变量,用来统计回文数的个数。
for (int i = test.from(x); i < test.from(x + 1); i++) {
boolean flag = true; //定义一个boolean类型的变量。
for (int j = 0; j < x / 2; j++) {
if (test.getArr(i, x)[j] != test.getArr(i, x)[x - 1 - j]) {//这里用!=比==的好处在于可以立即终止循环。
flag = false;
break;
}
}
if (flag) {//当所取数字满足回文数的时候再统计。
System.out.println(i);
count++;
}
}
return count;
}
**************************************
public static int from(int x) {
int num = 1;
for (int i = 1; i < x; i++) {
num *= 10;
}
return num;
}
***************************************
/**
用数组的思想对数字进行拆分
*/
public static int[] getArr(int num, int x) {
int[] arr = new int[x];
for (int i = 0; i < x; i++) {
arr[i] = num % 10;
num /= 10;
}
return arr;
}
/*当然 也可以用数字转换String再转换数组的方法,那样更为简单,但总感觉没有上文的逻辑性强。
个人觉得还有一种算法。比如说要计算五位数的回文数个数:
那么前两位一共有10-99 90种选择 第三位有0-9 10种选择
合计90*10=900个。
如果是6位:
那么前三位将有100-999 900种选择;也就是说回文数有900个。
请问各位博友还有没有其他思路。还望各位大牛不吝赐教。
*/版权声明:本文为qq_40483063原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。