切割字符串 package test6; import java.util.HashSet; import java.util.Set; import java.util.Stack; public class test2 { public static void main(String[] args){ String words = "bbaaabcaba"; int len = words.length(); int max = 0; for(int i = 1;i < len;i++){ int A = panduan(words.substring(0,i)); int B = quan(words.substring(i,words.length())) - panduan(words.substring(i,words.length())); max = Math.max(max,A*B); } System.out.println(max); } public static int quan(String word){ Set<String> set = new HashSet<>(); set.clear(); for(int i = 1;i <= word.length();i++){ for(int start = 0;start <= word.length()-i;start++){ set.add(word.substring(start,start+i)); } } return set.size(); } public static int panduan(String words){ HashSet<String> set = new HashSet<>(); set.clear(); for(int i = 1;i <= words.length();i+=2){ for(int start = 0;start <= words.length()-i;start++){ String w = words.substring(start,start+i); if(huiwen(w)){ set.add(w); } } } return set.size(); } public static boolean huiwen(String word){ Stack<Character> stack = new Stack<>(); String w = word; for(int i = 0;i < w.length();i++){ stack.push(w.charAt(i)); } int index = 0; while(!stack.isEmpty()){ if(!stack.pop().equals(w.charAt(index++))){ return false; } } return true; } }