最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年04月05日 11:42:04   作者:歐陽(yáng)鵬  
這篇文章主要為大家詳細(xì)介紹了Java統(tǒng)計(jì)字符串中出現(xiàn)次數(shù)最多的字符串以及出現(xiàn)次數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

此題的解題思路如下:

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

代碼如下:

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是一個(gè)有序集合,TreeSet中的元素將按照升序排列 
    //通過(guò)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>();*/ 
    //用來(lái)保存出現(xiàn)最多的字符串和次數(shù) 
    HashMap<String, Integer> hm=new HashMap<String, Integer>(); 
    //將出現(xiàn)過(guò)的字符遍歷 
    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()); 
      } 
    } 
  } 
} 

運(yùn)行結(jié)果如下:

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ù)相同時(shí),也可以將它們都打印出來(lái)。


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

運(yùn)行結(jié)果如下:

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 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Red?Hat?安裝JDK與IntelliJ?IDEA的詳細(xì)過(guò)程

    Red?Hat?安裝JDK與IntelliJ?IDEA的詳細(xì)過(guò)程

    YUM是基于Red Hat的Linux發(fā)行版的一個(gè)強(qiáng)大而用戶(hù)友好的包管理工具,這篇文章主要介紹了Red?Hat安裝JDK與IntelliJ IDEA,需要的朋友可以參考下
    2023-08-08
  • maven引入第三方j(luò)ar包配置詳解

    maven引入第三方j(luò)ar包配置詳解

    這篇文章主要為大家介紹了maven引入第三方j(luò)ar包配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • springboot 默認(rèn)靜態(tài)路徑實(shí)例解析

    springboot 默認(rèn)靜態(tài)路徑實(shí)例解析

    這篇文章主要介紹了springboot 默認(rèn)靜態(tài)路徑實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 基于java構(gòu)造方法Vector查找元素源碼分析

    基于java構(gòu)造方法Vector查找元素源碼分析

    本篇文章是關(guān)于ava構(gòu)造方法Vector源碼分析系列文章,本文主要介紹了Vector查找元素的源碼分析,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • Mybatis如何使用動(dòng)態(tài)語(yǔ)句實(shí)現(xiàn)批量刪除(delete結(jié)合foreach)

    Mybatis如何使用動(dòng)態(tài)語(yǔ)句實(shí)現(xiàn)批量刪除(delete結(jié)合foreach)

    這篇文章主要介紹了Mybatis如何使用動(dòng)態(tài)語(yǔ)句實(shí)現(xiàn)批量刪除(delete結(jié)合foreach),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring定義Bean范圍的三種方式

    Spring定義Bean范圍的三種方式

    在Spring框架中,Bean的作用域(scope)決定了一個(gè)Bean實(shí)例的生命周期和可見(jiàn)性,Spring支持多種作用域,最常用的是singleton和prototype,此外還有request、session等Web應(yīng)用相關(guān)的特定作用域,本文給大家介紹了Spring定義Bean范圍的三種方式,需要的朋友可以參考下
    2024-08-08
  • 詳解Spring cloud使用Ribbon進(jìn)行Restful請(qǐng)求

    詳解Spring cloud使用Ribbon進(jìn)行Restful請(qǐng)求

    這篇文章主要介紹了詳解Spring cloud使用Ribbon進(jìn)行Restful請(qǐng)求,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 簡(jiǎn)單了解Java編程中對(duì)異常處理的運(yùn)用

    簡(jiǎn)單了解Java編程中對(duì)異常處理的運(yùn)用

    這篇文章主要簡(jiǎn)單介紹了Java編程中對(duì)異常處理的運(yùn)用,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • Spring Data分頁(yè)與排序的實(shí)現(xiàn)方法

    Spring Data分頁(yè)與排序的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Spring Data分頁(yè)與排序的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Mac修改默認(rèn)jdk版本的方法總結(jié)

    Mac修改默認(rèn)jdk版本的方法總結(jié)

    這篇文章主要介紹了Mac修改默認(rèn)jdk版本的相關(guān)資料,文中詳細(xì)介紹了如何將Java版本從Java?17降低到Java?8,并通過(guò)修改.bash_profile文件來(lái)永久生效,需要的朋友可以參考下
    2024-12-12

最新評(píng)論

新和县| 郁南县| 正阳县| 乡宁县| 浦江县| 南康市| 青阳县| 乐业县| 达尔| 香港 | 兴安县| 武安市| 四川省| 延庆县| 喀什市| 遵义县| 磐石市| 新乐市| 贵港市| 靖边县| 慈溪市| 北海市| 四川省| 兰西县| 嵊州市| 小金县| 舞钢市| 静乐县| 潮州市| 霍州市| 遂平县| 杭锦后旗| 临潭县| 诸城市| 镇雄县| 沂南县| 循化| 轮台县| 南昌市| 老河口市| 汽车|