求字串中出現次數最多的字母及次數
阿新 • • 發佈:2019-01-23
import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.TreeSet; public class JavaTest1 { public static void main(String[] args) { String input = "aavzsada dwerosd fiefjsjsdfn,jash"; new JavaTest1().doString(input); } public void doString(String input){ char[] chars = input.toCharArray();//將字串轉化成字元陣列 ArrayList<String> lists = new ArrayList<String>();//list一個index對應一個值(值可重複) TreeSet<String> set = new TreeSet<String>();//set是集合,特點是元素無重複 for(int i = 0; i < chars.length; i++){ lists.add(String.valueOf(chars[i])); set.add(String.valueOf(chars[i])); } System.out.println(set); Collections.sort(lists);//sort()對Arraylist按照unicode編碼順序排序 System.out.println(lists); StringBuffer sb = new StringBuffer(); for(int i = 0; i < lists.size(); i++){ sb.append(lists.get(i));//將字元陣列組合成字串 } input = sb.toString(); System.out.println(input); int max = 0;//最大長度 String maxString = ""; ArrayList<String> maxlist = new ArrayList<String>();//存放最多的字元 Iterator<String> its = set.iterator();//Iterator迭代器,每次自動取下一個集合裡的值 while(its.hasNext()){ String os = (String) its.next(); int begin = input.indexOf(os);//取第一個os所在下標 int end = input.lastIndexOf(os);//取最後一個os所在下標 int value = end - begin + 1;//測出長度 if(value > max){ max = value; maxString = os; maxlist.add(os); }else if(value == max){ maxlist.add(os); } } System.out.print("max data "); for(int i = 1; i < maxlist.size();i++){ System.out.print(maxlist.get(i)+" "); } System.out.println(); System.out.println("max "+max); } }