检验回文数的两种方法

“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。

设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数

回文数的检验一直是算法基础中常考的题目,这里出两种方法来解决回文数检验的问题

解法一:取数字末位乘10累加起来,如最后结果如果跟原数字相等则为回文数

import java.util.Scanner;

/**
 * 回文数
 * @author Administrator
 *
 */
public class Main {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int n = input.nextInt();
		if(n==f(n))
			System.out.println("yes");
		else
			System.out.println("no");
		input.close();
	}
	
	static int f(int n){
		int t = 0;
		while(n!=0){
			t =t*10+n%10;
			n/=10;
		}
		return t;
	}
}

解法二:将数字化为字符串,再将字符串反转,最后比较字符串

import java.util.Scanner;

/**
 * 回文数
 * @author Administrator
 *
 */
public class Main {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int n = input.nextInt();
		String s = "" + n;
		if(s.equals(f(s))) 
			System.out.println("yes");
		else
			System.out.println("no");
		input.close();
	}
	/**
	 *逆转字符串
	 * @param s
	 * @return
	 */
	static String f(String s){
		if(s.length()==1) return s;
		return f(s.substring(1)) + s.charAt(0);
	}
}

猜你喜欢

转载自blog.csdn.net/betonme/article/details/79712111