激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - Java教程 - Java求字符串中出現次數最多的字符串以及出現次數

Java求字符串中出現次數最多的字符串以及出現次數

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

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

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

此題的解題思路如下:

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

代碼如下:

?
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快速找到所有出現的字符串
     *   將輸入的字符串按升序排列
     */
    //將String轉換為字符數組
    char[] chars=input.toCharArray();
    ArrayList<String> lists=new ArrayList<String>();
    //TreeSet是一個有序集合,TreeSet中的元素將按照升序排列
    //通過TreeSet的不重復性,快速找到所有出現的字符串
    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);  
    //將排序好的字符數組轉換為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);  
     
    /**
     * 第二步: 找出出現相同的字符并記錄出現多少次
     */
    //最多重復出現多少次
    int max=0;
    //重復出現的字符
    String maxString="";
    /*//重復出現的字符列表
    ArrayList<String> maxList=new ArrayList<String>();*/
    //用來保存出現最多的字符串和次數
    HashMap<String, Integer> hm=new HashMap<String, Integer>();
    //將出現過的字符遍歷
    Iterator<String> its=set.iterator();
    while (its.hasNext()) {
      String os=its.next();
      //字符出現在排序后input中的第一次位置
      int begin=input.indexOf(os);
      //字符出現在排序后input中的最后一次位置
      int end=input.lastIndexOf(os);
      //字符出現的次數
      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("重復最多的字母是:"+enties.getKey());
        System.out.println("重復最多的次數是:"+enties.getValue());
      }
    }
  }
}

運行結果如下:

?
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

重復最多的字母是:n重復最多的次數是:4 

當有字符串重復的次數相同時,也可以將它們都打印出來。

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

運行結果如下:

?
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重復最多的次數是:6
重復最多的字母是:a重復最多的次數是:6

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 性插视频| 日本一区二区精品视频 | 欧美顶级毛片在线播放小说 | 成人福利在线观看 | 欧美精品一区二区三区在线播放 | 精品在线视频播放 | 中文字幕亚洲视频 | 性aaa| 久久国产精品无码网站 | 日韩色视频 | 久久久www成人免费精品 | 看免费的毛片 | 亚洲aⅴ在线观看 | 成年片在线观看 | 亚洲精华液久久含羞草 | 黄色影院在线看 | 逼特逼视频在线观看 | 2023av在线视频 | 91成人免费在线观看 | 欧美国产一区二区三区 | 在线成人免费观看视频 | 亚洲性生活免费视频 | 国产精品99久久久久久宅女 | 91九色福利| 91婷婷射| 欧美三级短视频 | 99精品视频久久精品视频 | 成人福利在线 | 色诱亚洲精品久久久久久 | 亚洲操比视频 | 成人一级视频 | 99精彩视频在线观看 | 久久网站热最新地址4 | 欧美另类视频在线 | 黄色网址免费进入 | 主播粉嫩国产在线精品 | 一区在线视频 | 麻豆视频在线免费观看 | 最新一区二区三区 | 成人国产精品一区二区毛片在线 | 欧美a级在线免费观看 |