zoukankan      html  css  js  c++  java
  • Java 字符串计算频率出现最高的字符

    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中的一个空字符 
            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"); 
        } 
  • 相关阅读:
    RDIFramework.NET ━ .NET快速信息化系统开发框架钜献 V2.9 版本震撼发布
    免费的海量编程中文书籍索引-都是干货【强烈建议收藏】
    SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
    实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-Web
    RDIFramework.NET 框架之组织机构权限设置
    实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-WinForm
    RDIFramework.NET ━ 9.16 案例模块━ Web部分
    RDIFramework.NET ━ 9.15 个性化设置 ━ Web部分
    RDIFramework.NET ━ 9.14 数据库连接管理 ━ Web部分
    RDIFramework.NET ━ 9.13 系统日志与系统异常管理 ━ Web部分
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6769957.html
Copyright © 2011-2022 走看看