一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java求字符串中出現(xiàn)次數(shù)最多的字符串以及出現(xiàn)次數(shù)

Java求字符串中出現(xiàn)次數(shù)最多的字符串以及出現(xiàn)次數(shù)

2020-09-06 15:20歐陽鵬 Java教程

這篇文章主要為大家詳細(xì)介紹了Java統(tǒng)計字符串中出現(xiàn)次數(shù)最多的字符串以及出現(xiàn)次數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下

金山公司面試題:一個字符串中可能包含a~z中的多個字符,如有重復(fù),如String data="aavzcadfdsfsdhshgWasdfasdf",求出現(xiàn)次數(shù)最多的那個字母及次數(shù),如有多個重復(fù)的則都求出。

此題的解題思路如下:

引入TreeSet:通過集合快速找到所有出現(xiàn)過的字符串
引入ArrayList:為了快速排序,再通過StringBuffer生成排序后的字符串
通過String的indexOf方法和lastIndexOf方法來計算每個字符串出現(xiàn)的次數(shù)最大值
使用HashMap存儲出現(xiàn)多的字符串和次數(shù)

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeSet;
 
public class SortTest {
  public static void main(String[] args) {
    String input = "httpblogcsdnnetouyangpeng";
    new SortTest().doString(input);
  }
 
  public void doString(String input) {
    /**
     * 第一步:
     *   使用TreeSet快速找到所有出現(xiàn)的字符串
     *   將輸入的字符串按升序排列
     */
    //將String轉(zhuǎn)換為字符數(shù)組
    char[] chars=input.toCharArray();
    ArrayList<String> lists=new ArrayList<String>();
    //TreeSet是一個有序集合,TreeSet中的元素將按照升序排列
    //通過TreeSet的不重復(fù)性,快速找到所有出現(xiàn)的字符串
    TreeSet<String> set=new TreeSet<String>();
    for (int i = 0; i < chars.length; i++) {
      lists.add(String.valueOf(chars[i]));
      set.add(String.valueOf(chars[i]));
    }
    //set= [a, b, c, d, e, g, h, l, n, o, p, s, t, u, y]
    System.out.println("set= "+set);  
    //排序
    Collections.sort(lists);
    //lists= [a, b, c, d, e, e, g, g, g, h, l, n, n, n, n, o, o, p, p, s, t, t, t, u, y]
    System.out.println("lists= "+lists);  
    //將排序好的字符數(shù)組轉(zhuǎn)換為StringBuffer
    StringBuffer sb=new StringBuffer();
    for (int i = 0; i < lists.size(); i++) {
      sb.append(lists.get(i));
    }
    input=sb.toString(); 
    //input= abcdeeggghlnnnnooppstttuy
    System.out.println("input= "+input);  
     
    /**
     * 第二步: 找出出現(xiàn)相同的字符并記錄出現(xiàn)多少次
     */
    //最多重復(fù)出現(xiàn)多少次
    int max=0;
    //重復(fù)出現(xiàn)的字符
    String maxString="";
    /*//重復(fù)出現(xiàn)的字符列表
    ArrayList<String> maxList=new ArrayList<String>();*/
    //用來保存出現(xiàn)最多的字符串和次數(shù)
    HashMap<String, Integer> hm=new HashMap<String, Integer>();
    //將出現(xiàn)過的字符遍歷
    Iterator<String> its=set.iterator();
    while (its.hasNext()) {
      String os=its.next();
      //字符出現(xiàn)在排序后input中的第一次位置
      int begin=input.indexOf(os);
      //字符出現(xiàn)在排序后input中的最后一次位置
      int end=input.lastIndexOf(os);
      //字符出現(xiàn)的次數(shù)
      int value=end-begin+1;
      if (value>=max) {
        max=value;
        maxString=os;
        hm.put(maxString, max);
      }
    }
     
    for (Map.Entry<String, Integer> enties: hm.entrySet()) {
      if (enties.getValue()==max) {
        System.out.print("重復(fù)最多的字母是:"+enties.getKey());
        System.out.println("重復(fù)最多的次數(shù)是:"+enties.getValue());
      }
    }
  }
}

運行結(jié)果如下:

?
1
2
3
set= [a, b, c, d, e, g, h, l, n, o, p, s, t, u, y]
lists= [a, b, c, d, e, e, g, g, g, h, l, n, n, n, n, o, o, p, p, s, t, t, t, u, y]
input= abcdeeggghlnnnnooppstttuy

重復(fù)最多的字母是:n重復(fù)最多的次數(shù)是:4 

當(dāng)有字符串重復(fù)的次數(shù)相同時,也可以將它們都打印出來。

?
1
2
3
4
public static void main(String[] args) {
  String input = "abbcccddddeeeeeffffffaaaaabbb";
  new SortTest().doString(input);
}

運行結(jié)果如下:

?
1
2
3
4
5
set= [a, b, c, d, e, f]
lists= [a, a, a, a, a, a, b, b, b, b, b, c, c, c, d, d, d, d, e, e, e, e, e, f, f, f, f, f, f]
input= aaaaaabbbbbcccddddeeeeeffffff
重復(fù)最多的字母是:f重復(fù)最多的次數(shù)是:6
重復(fù)最多的字母是:a重復(fù)最多的次數(shù)是:6

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/ouyang_peng/article/details/46526519

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品曰本亚洲78 | 成人福利在线视频免费观看 | 国产午夜精品一区二区三区 | 亚洲天堂日韩在线 | 超时空要爱国语完整版在线 | 性做久久久久免费观看 | 网www天堂资源在线 王淑兰与铁柱全文免费阅读 | 波多野结衣女老师 | 国产精品亚洲w码日韩中文 国产精品香蕉在线观看不卡 | 91麻豆制片厂| 秀婷程仪公欲息肉婷在线观看 | 无套大战白嫩乌克兰美女 | 欧美性xxx狂流白浆 欧美性f | 欧美男同video | 交换朋友夫妇3中文字幕 | 黑人巨 | 99精品热线在线观看免费视频 | 色噜噜狠狠色综合 | 国产福利专区精品视频 | 国产亚洲福利精品一区 | 亚洲 欧美 国产 在线 日韩 | 天堂va亚洲va欧美va国产 | 欧美人禽杂交狂配无删完整 | 好大好长好紧爽免费 | 99久久精品国产一区二区 | 成人午夜在线视频 | 99久久伊人一区二区yy5099 | 久久se精品一区二区国产 | 国产中文在线 | 久久永久免费视频 | 久久不射网 | 日日射视频 | a级成人毛片免费图片 | 国产区成人综合色在线 | 国产午夜精品理论片 | 亚洲老头老太hd | 国产网站免费在线观看 | 视频一区二区三区在线观看 | 五月天精品视频在线观看 | 91久久综合九色综合欧美98 | 精品综合久久久久久8888 |