我目前正试图找到一种让我的程序更高效运行的方法。如果有人对如何优化我的程序有任何想法,我会非常感激。 此外,输出必须按字母顺序显示,没有任何重复。
package Palindrome;
import java.io.*;
import java.util.*;
public class Palindrome {
public static void main(String[] args)throws IOException{
Scanner scan;
scan = new Scanner(System.in);
while (scan.hasNext()) {
subPal(scan.next());
}
if (scan != null) {
scan.close();
}}
private static void subPal(String str) {
String s1 = "";
int N = str.length();
ArrayList<String> palindromeArray = new ArrayList<String>();
for (int i = 2; i <= N; i++) {
for (int j = 0; j <= N; j++) {
int k = i + j - 1;
if (k >= N)
continue;
s1 = str.substring(j, i + j);
if (s1.equals(new StringBuilder(s1).reverse().toString())&& !palindromeArray.contains(s1)) {
palindromeArray.add(s1);
}
}
}
Collections.sort(palindromeArray);
for (String s : palindromeArray)
System.out.println(s );
}
}