不使用库函数,判断回文数字。
其实最核心的就是如何将一个正整型数字转成数组,我们可以使用数学的取模%和数学的整除/将数字的各个位数取出,逐一放入目标数组中即可。
其实最核心的就是如何将一个正整型数字转成数组,我们可以使用数学的取模%和数学的整除/将数字的各个位数取出,逐一放入目标数组中即可。
public class ReverseNumber {
/**
* @param args
*/
public static void main(String[] args) {
int input = 12321;
int[] reverseNum = ReverseNumber.getReverse(input);
int[] originalNum = ReverseNumber.getReverse(reverseNum);
if (ReverseNumber.isSameArray(reverseNum, originalNum))
{
System.out.println("It is a reverse number.");
} else
{
System.out.println("It is not a reverse number.");
}
}
/*
* 将目标输入的整数,不经过库函数,转成反序的数组A。
* @input int originalNum 目标整数
* @return int[] 返回反序的数组
*/
public static int[] getReverse(int originalNum)
{
int[] reversedNum = new int[30];
int i = 0;
while(originalNum != 0)
{
reversedNum[i++] = originalNum % 10; //使用数学取模操作,获得最后一位,并计入目标数组中
originalNum = originalNum / 10; //使用数学整除,移除上已经计入数组的最后一位。
}
return reversedNum;
}
/*
* 将数组反向排列一次,得到一个A的反向数组B(即原来的整数的数组形式)
* @input int[] reverseNum 要转序的数组
* @return int[] 返回转序完毕的数组
*/
public static int[] getReverse(int[] reverseNum)
{
int[] descNum = new int[30];
int lengthOfNum = reverseNum.length;
for(int i = 0; i < lengthOfNum; i++)
{
descNum[lengthOfNum - i -1] = reverseNum[i];
}
return descNum;
}
/*
* 将数组A和数组B比较,看是否是反序一样的数组。
* @input int[] originalNum, int[] reversNum 要比较的两个数组
* @return boolean 返回判断结果,如果是回文数,返回true; 如果不是回文数,返回false.
*/
public static boolean isSameArray(int[] originalNum, int[] reversNum)
{
boolean result = true;
if (originalNum.length == reversNum.length)
{
int len = originalNum.length;
for (int i =0; i < len; i++)
{
if (originalNum[i] != reversNum[len - i - 1])
{
result = false;
break;
}
}
}
else
{
result = false;
}
return result;
}
}