package com.xiaocanbanyue.circleNum;
/**
* @author xiaocanbanyue
* 用于查找指定数值范围内的回数:11,121,12321
*
*/
public class CircleNum {
final static long[] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,
99999999, 999999999,9999999999l,99999999999l,99999999999l};
/**
* 判断x属于多少位数
*
* @param x
* @return
*/
static int sizeOfInt(long x) {
for (int i = 0; i< sizeTable.length; i++){
if (x <= sizeTable[i])
return i + 1;
}
return -1;
}
/**
* 判断一个数是否为回数
*
* @param num
* @return
*/
private static boolean isCircleNum(long num) {
int i = sizeOfInt(num);
if(i==-1){
System.out.println("输入不合法,数值不可超过99999999999l");
return false;
}
if(i==1){
System.out.println("一位数不参与判断:"+num);
return false;
}
{
int[] values = new int[i];
for(int j = i-1; j > -1;j--){
values[j] = (int) (num / ((long)Math.pow(10, j)));
num = num % ((long)Math.pow(10, j));
}
for(int k = 0; k < i/2; k++){
if(values[k]!=values[i-1-k]){
return false;
}
}
}
return true;
}
public static void main(String args[]){
long count = 0;
for(long i = 1; i < 100l;i++){
if(isCircleNum(i)){
// System.out.println(i);
count ++;
}
}
System.out.println("10000000l以内的回数个数为:"+count);
}
}
查找指定数值范围内的回数
最新推荐文章于 2023-12-14 11:58:20 发布