每日一小练之回文数(两种方法)

题目描述:输入一个整数 n,请检查是否是"回文数"

回文数:正向与反向都一致的数字
例如:
输入:12321
返回:1 代表是回文数

输入:9527
返回:0 代表不是回文数

思路一

我们要输入一个整数,然后再判断这个整数是否为回文数,如果是回文数输出1,如果不是输出0;
那我们首先要解决输入问题

  1. 创建一个Scanner类对象input,利用类中的nextInt()方法获取键盘输入的数字。
  2. 紧接着,我们就该要判断它是否是回文数了,怎么判断呢,那不就是把这个数字第一位与最后一位比较是否相同,第二位与倒数第二位进行比较 ,以此类推,如果有不一样,那后面就不用再比了吧,直接就不是回文数了,输出0。
  3. 那这个时候,我们并不知道这个整数到底有多少位,所以比到什么时候截止,就不太好确定,所以我们转换思维,我们可以用这个整数(9527)和它反转后的数字(7259)相比,如果不一样,说明这个数不是回文数。
  4. 想要反转整数,我们就应该先把这个int整数类型转换成String字符串类型了,这样通过String类里的(charAt())方法很容易就可以拿到这个数的每位数字。然后将其倒序放入另一个字符串中。
  5. 进行比较,这里给出多种思路:
  • 直接使用String类中的(equals())方法结合三目运算符(或用if…else…判断)
  • 转换成整数Int类型,使用(==)进行判断
import java.util.Scanner;

public class Test02 {
    
    
	public static void main(String[] args) {
    
    
		// 1. 获取输入的数字
		Scanner input = new Scanner(System.in);
		int n = input.nextInt();

		// 2. 将数字转换为字符串
		String strNumber = String.valueOf(n);

		String result = ""; // 用于保存新数字的字符串

		// 3.倒序遍历每个字符,组成新数字
		for (int i = strNumber.length() - 1; i >= 0; i--) {
    
    
			result += strNumber.charAt(i);
		}

		//System.out.println(result.equals(strNumber) ? 1 : 0);

		if (result.equals(strNumber)) {
    
    
			System.out.println(1);
		} else {
    
    
			System.out.println(0);
		}

	}
}

思路二

同样,我们解决输入,我们认为小于0的均不是回文数,所以我们运用数学方法让数字反转。然后进行判断是否相同。
数学思路:用12321为例

  • i: 12321%10=1 (获取最后一个数字保存至临时变量temp中)
  • ii: 将获取的最后一个数字存入revese中,需让revese中的数字整体x10,再+temp;此时revese=1;
  • iii: 另将原数字中的最后一位删除,则num=num÷10;此时num=1232;
  • 然后又重复第一步:temp=1232%10=2;
  • 重复第二步:revese=revese×10+temp=1×10+2=12;
  • 重复第三步:num=num÷10=123;
  • 然后又重复第一步:temp=123%10=3;
  • 重复第二步:revese=revese×10+temp=12×10+3=123;
  • 重复第三步:num=num÷10=12;
  • …依次循环,我们选用while循环
    直接看代码吧!
import java.util.Scanner;

public class Program002 {
    
    
	public static void main(String[] args) {
    
    
		// 1. 获取输入的数字
		Scanner input = new Scanner(System.in);
		int n = input.nextInt();

		// 2.判断是否是回文数
		System.out.println(isPalindromeNumber(n));
	}
	
	public static int isPalindromeNumber(int number) {
    
    
		
	        if(number<0)return 0;
	        int revese=0,num=number;
	        while(num!=0){
    
    
	        	int temp=num%10;
	            revese=revese*10+temp;
	            num/=10;
	            
	        }
	      
	       return number==revese ? 1:0;
	
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_51529267/article/details/112814999