Java 字串計算頻率出現最高的字元

來源:互聯網
上載者:User

標籤:pre   space   put   頻率   substr   hash   ring   輸出   static   

public class HighFrequencyWord {
public static void findFrequencyWord(String str) { 
        Collection<Integer> al=new ArrayList<Integer>(); 
        Map<String,Integer> map=new HashMap<String,Integer>(); 
        String tempStr = str; 
        String[] stringArray = str.split(""); 
        
        System.out.println(" stringArray.length = "+stringArray.length);
        
        //用來儲存字串裡每一個出現過的字元,且不會出現反覆的 
        Set<String> set = new HashSet<String>(); 
        int stringLength = stringArray.length; 
        for (int i = 0; i < stringLength; i++) { 
            set.add(stringArray[i]); 
        } 
        //移掉set中的一個Null 字元 
        set.remove(""); 
         
        System.out.println(set); 
        int count = 0; 
        boolean flag = true; 
         
        for (String s : set) { 
             
            while (flag) { 
                //假設索引存在 
                if (tempStr.indexOf(s) != -1) { 
                    //記錄出現字元的當前位置 
                    int index = tempStr.indexOf(s); 
                    //讓字串從下一索引處開始 
                    tempStr = tempStr.substring(index+1); 
                    //假設索引存在,記錄值加1 
                    count++; 
                     
                } else { 
                    //假設索引不存在,賦值false退出迴圈 
                    flag = false; 
                } 
                 
            } 
            //為了運行下一迴圈 
            flag = true; 
            //把值存入map,讓字元與其頻率相應 
            map.put(s,count); 
            //由於是上一結果,所以讓值歸零,而且字串變回原來的字串 
            count = 0; 
            tempStr = str; 
             
        } 
        //將map的值變為一個列表 
        al= map.values(); 
        
        //然後轉為數組 
        Integer[] stringCount =al.toArray(new Integer[]{}); 
        int countLength=stringCount.length; 
        //按升序排序 
        Arrays.sort(stringCount); 
        //得到數組最大值 
        int max=stringCount[countLength-1]; 
        for(String s: set){ 
            for(int i=0;i<countLength;i++){ 
                //假設map的值與最大值同樣,則輸出 
                if(map.get(s)==max){ 
                    System.out.println(s + ":" + max); 
                } 
            } 
             
        } 
    } 
     
    public static void main(String[] args) { 
        findFrequencyWord("ababbsssss"); 
    } 

Java 字串計算頻率出現最高的字元

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.