每次遇到回文数就很苦恼,因为经常会遇到,但是每次遇到就陌生而又熟悉,今天我就教大家一种简单的方式去解决回文数的方式,来我们请看下文:
今天我们来聊一聊回文数,回文数就是形似123321,42624,212这样的数,像“-1221”,“a434”他们就不是回文数,显而易见,回文数是两边对称的,或者还有这类“baooab”,"helloolleh"这样的字符串,他们也是回文数,因为他们也是对称出现的,他们的解决方式类似,但是数字类型的回文数解决方式更多一些。下面展示了解决回文数的两种方式:
(1)数字类型的回文数
可以解决类似123321,67876的数字回文数的问题
方式一:
package com.kfm.alithmetic;
import java.util.Scanner;
public class Palindromic {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int x=scanner.nextInt();
//如果条件成立就是true,输出回文数,不成立是false,输出不是回文数
if(isPalindromeTwo(x)) {
System.out.println(x+"是回文数");
}else {
System.out.println(x+"不是回文数");
}
}
public boolean isPalindromeOne(int x) {
long res = 0;
int temp = x;
//当每次输入的数大于0的时候执行循环,如果是负数就直接返回false
while (x > 0) {
//表示每次从倒着相加逆序输出
//res就是每次倒着相加后的值
res = res * 10 + x % 10;
//x是每次要倒着加的更高一位的值
x /= 10;
}
//如果输入1211
// 此时res= 1121 temp=1211,两者不相等输出false
return res == temp;
}
}
方式二:
这个解决方式和下一个字符类型的相似,图片请看下图
package com.kfm.alithmetic;
import java.util.Scanner;
public class Palindromic {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int x=scanner.nextInt();
//如果条件成立就是true,输出回文数,不成立是false,输出不是回文数
if(isPalindromeTwo(x)) {
System.out.println(x+"是回文数");
}else {
System.out.println(x+"不是回文数");
}
}
private boolean isPalindromeTwo(int x) {
if (x < 0)
return false;
//将一个数字变为一个字符串
String s = String.valueOf(x);
//将他保存在一个char数组里
char[] charList = s.toCharArray();
//对他进行遍历,然后对他第一个元素和最后一个元素作比较,第二个元素和倒数第二个元素作比较,
//以此类推,如果相等的话就返回true,不相等就返回false
for (int i = 0; i < charList.length / 2 ; i++) {
if (!(charList[i] == charList[charList.length-1-i])) {
return false;
}
}
return true;
}
}
(1)字符类型的回文数
可以解决类似“abbabba”,“werrew”,“wey67”,"-1221"的各种回文数问题
package com.kfm.alithmetic;
import java.util.Scanner;
public class Palindromic {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String x=scanner.next();
//如果条件成立就是true,输出回文数,不成立是false,输出不是回文数
if(isPalindromeTwo(x)) {
System.out.println(x+"是回文数");
}else {
System.out.println(x+"不是回文数");
}
}
private boolean isPalindromeTwo(String x) {
//建立一个char数组
char[] charList = x.toCharArray();
for (int i = 0; i < charList.length / 2 ; i++) {
if (!(charList[i] == charList[charList.length-1-i])) {
return false;
}
}
return true;
}
}
如果还有什么问题,欢迎留言或者私信我哦,
今天是持续写作的第 3 / 200 天。可以点赞、评论、收藏啦。