您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關利用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實現求字符串中出現次數最多的字符及次數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。