91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用Java實現求字符串中出現次數最多的字符及次數

發布時間:2020-11-12 16:57:24 來源:億速云 閱讀:528 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關利用Java實現求字符串中出現次數最多的字符及次數,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

此題的解題思路如下:

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

代碼如下:

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()); 
      } 
    } 
  } 
} 

運行結果如下:

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 

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


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

運行結果如下:

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 

關于利用Java實現求字符串中出現次數最多的字符及次數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泗洪县| 丰顺县| 永川市| 龙江县| 德阳市| 海原县| 河池市| 新乡县| 平山县| 滨州市| 二手房| 祁阳县| 临桂县| 城固县| 双鸭山市| 赤水市| 张家川| 乌鲁木齐市| 个旧市| 五河县| 鄢陵县| 县级市| 辛集市| 天祝| 五大连池市| 沂源县| 古田县| 汕头市| 湖北省| 本溪市| 临漳县| 双江| 桓台县| 溧阳市| 永昌县| 桑日县| 兴文县| 泰来县| 和政县| 安泽县| 乐陵市|