昨天刷力扣的时候遇到一个判断回文链表,就按照之前的思路照做的,有好多地方都没有简化
我写了一个judge方法来判断一个数是否为回文,利用栈的先入后出特性。
具体:先把一个整数转成字符串然后将前半部分存入栈,然后和原字符串的后半部分比较,中间判断了一下它是奇数位还是偶数位,例如12321的话存入栈的是12比较时要跳过3
然后写了一个decide方法计算一个整数的各位上的和
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 10000; i < 1000000; i++) {
if (judge(String.valueOf(i))) {
arrayList.add(i);
}
}
for (int j = 0; j < arrayList.size(); j++) {
int sum=deicde(String.valueOf(arrayList.get(j)));
if (sum==n) {
System.out.println(arrayList.get(j));
}
}
}
public static boolean judge(String m) {
Stack<Integer> stack = new Stack<>();
int length=m.length();
char[] c=m.toCharArray();
for (int i = 0; i < length/2; i++) {
stack.push((int) c[i]);
}
int len=length/2;
if (length%2!=0) {
len++;
}
for (int i = len; i < length; i++) {
if (c[i]!=stack.pop()) {
return false;
}
}
return true;
}
public static int deicde(String n) {
char[] c = n.toCharArray();
int sum=0;
for (int i = 0; i < c.length; i++) {
sum += c[i]-48;
}
return sum;
}
}