Java实现回文数四种方法

干货分享 | 打印回文数的四种方法!!

  • 本文提供了四种方法来打印回文数,大家可以根据题目的要求(如:时间复杂度、运行时间、内存等限制条件)来选取合适的方法。如果题目要求打印的回文数较大,我们可以选择将数字转换为字符串的形式,这样就避免了数字过大而溢出;当然,打印的回文数没有超出Java可以表示的范围,下列的四种方法都可以实现。
  • 下面以打印四位的回文数来举例。

方法一:

直接循环一个四位数的每一位,然后判断是否满足回文数要求。(注:要输出几位的回文数就需要几重循环)

public class Main {
	public void Palindrome() {
		for (int i = 1; i < 10; i++) {
			for (int j = 0; j < 10; j++) {
				for (int x = 0; x < 10; x++) {
					for (int y = 0; y < 10; y++) {
						if (i == y && j == x) {
							System.out.println("" + i + j + x + y);
						}
					}
				}
			}
		}
	}
	public static void main(String[] args) {
		new Main().Palindrome();
	}
}

方法二:

先将原数字转换成字符串,再逆转字符串,最后判断逆转前后的字符串是否相等。

public class Main {
	public void Palindrome() {
		for(int i  = 1000;i < 10000;i++) {
			String ans = i + "";	//数字转换为字符串
			String reverse = new StringBuffer(ans).reverse().toString();//逆转字符串
			if(ans.equalsIgnoreCase(reverse)) { 	//比较两个字符串是否相等
				System.out.println(ans);
			}
		}
	}
	public static void main(String[] args) {
		new Main().Palindrome();
	}
}

方法三:

先将原数字逆转,然后判断逆转前后的数字是否相等。

public class Main {
	public void Palindrome() {
		for(int i  = 1000;i < 10000;i++) {
			int temp = i;
			int reverse = 0;
			while(temp != 0) {
				int remain = temp % 10;
				temp /= 10;
				reverse = reverse * 10 + remain;
			}
			if(reverse == i) { 	
				System.out.println(reverse);
			}
		}
	}
	public static void main(String[] args) {
		new Main().Palindrome();
	}
}

方法四:

将一个四位数的每一位存放在一个数组中,再依次取数组的两端元素并判断是否相等。

public class Main {
	public void Palindrome() {
		for(int i  = 1000;i < 10000;i++) {
			String temp = i + "";
			char[] str = temp.toCharArray();//将字符串以单个字符存放在数组中
			if(str[0] == str[3] && str[1] == str[2]) {
				for(int j = 0;j < str.length;j++) {
					System.out.print(str[j]);
				}
				System.out.println();
			}
		}
	}
	public static void main(String[] args) {
		new Main().Palindrome();
	}
}

补充:如需要降低循环的次数,进行如下判断
1、数字是否为负数
2、数字是否以0结尾

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

京茶吉鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值