输入一个字符串,判断这个字符串的子序列回文数个数,这个子序列可以不连续,但是要有前后次序,而且不同位置的元素就算一个例如XXY,输出4,因为X,X,Y,XX
package test; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class IStringBuffer { static List<List> listroot =new LinkedList<>(); public static void main(String[] args) { String str = new String(); String str1 = new String(); Scanner in = new Scanner(System.in); str= in.nextLine(); perm(str); System.out.println(listroot.size()); } public static boolean pan(List str){ if(str.size()==1){ return true; } for(int i=0;i<str.size()/2;i++){ if(str.get(i).equals(str.get(str.size()-1-i))){ }else{ return false; } } return true; } public static void perm(String s) { List<String> result = new ArrayList<String>(); for (int i = 1; i <= s.length(); i++) { perm(s, i, result); } } public static void perm(String s, int m, List<String> result) { int j=0; if (m == 0) { if(pan(result)){ listroot.add(result); }else{ } return; } if (s.length() != 0) { result.add(s.charAt(0) + ""); perm(s.substring(1, s.length()), m - 1, result); result.remove(result.size() - 1); perm(s.substring(1, s.length()), m, result); } } }