分享内容:关于集合的使用
书页号码:77页
题目:一个字符串中包含a~z中的多个字符,如有重复,如String data = "aavzcadfdsfsdhshgwasdfasdfddaaa",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.Iterator; 4 import java.util.TreeSet; 5 6 7 8 9 public class test { 10 11 public static void main(String[] args) { 12 String input = "aavzcadfdsfsdhshgwasdfasdfddaaa"; 13 new test().doString(input); 14 } 15 16 public void doString(String input){ 17 char[] chars = input.toCharArray(); 18 ArrayList<String> lists = new ArrayList<String>(); 19 20 // 第一步:先将数组传入到TreeSet,通过这个集合自动过滤掉重复的字母,并且该集合会自动排序。 21 TreeSet<String> set = new TreeSet<String>(); 22 for(int i=0;i<chars.length;i++){ 23 lists.add(String.valueOf(chars[i])); 24 set.add(String.valueOf(chars[i])); 25 } 26 27 System.out.println(set);//输出:[a, c, d, f, g, h, s, v, w, z] 28 Collections.sort(lists);// 第二步:使用ArrayList 进行快速排序 29 System.out.println(lists);//输出:[a, a, a, a, a, a, a, a, c, d, d, d, d, d, d, d, f, f, f, f, g, h, h, s, s, s, s, s, v, w, z] 30 31 StringBuffer sb = new StringBuffer(); 32 for(int i=0;i<lists.size();i++){ 33 sb.append(lists.get(i)); 34 } 35 36 input = sb.toString(); 37 System.out.println(input);//输出:aaaaaaaacdddddddffffghhsssssvwz 38 int max = 0; 39 String maxString = ""; 40 ArrayList<String> maxList = new ArrayList<String>(); 41 42 Iterator its = set.iterator(); 43 while(its.hasNext()){ 44 String os = (String) its.next(); 45 int begin = input.indexOf(os); 46 int end = input.lastIndexOf(os);// 第三步:使用indexOf 和 lastIndexOf 来求出最大值。 47 int value = end - begin +1; 48 if(value>max){ 49 max = value; 50 maxString = os; 51 maxList.add(os); 52 }else if(value==max){ 53 maxList.add(os); 54 } 55 } 56 57 System.out.println("maxString:"+maxString);//输出:maxString:a 58 System.out.println("maxList:"+maxList);//输出:maxList:[a] 59 60 int index = 0; 61 for(int i=0;i<maxList.size();i++){ 62 if(maxList.get(i).equals(maxString)){ 63 index = i; 64 break; 65 } 66 } 67 68 System.out.print("max data:");//输出:max data:a 69 for(int i=index;i<maxList.size();i++){ 70 System.out.println(maxList.get(i)+" "); 71 } 72 73 System.out.println(); 74 System.out.println("max:"+max);//输出:max:8 75 76 } 77 78 79 }
分享这个例子的原因是这个里面包含一些集合(TreeSet、ArrayList、indexOf、lastIndexOf)例子的使用,感觉比较经典因此就分享出来了,当然这篇文章我还想分享一些关于递归方面例子,但是感觉我对递归的了解还是比较肤浅,等我抽个时间研究后,再出来分享一下。
本篇未完待续........
时间: 2024-11-02 19:35:22