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"); 

    }

Java 字符串计算频率出现最高的字符的更多相关文章

  1. java一个字符串中出现次数最多的字符以及次数

    学习了别人的方法,觉得挺巧妙的.就是每次取出字符串的第一个字符,将字符串中与第一个字符相同的字符全部删除掉,然后通过计算删除前后字符串的长度来确定该字符在字符串中出现的次数,最终比较出出现最多次的字符 ...

  2. js字符串长度计算(一个汉字==两个字符)和字符串截取

    js字符串长度计算(一个汉字==两个字符)和字符串截取 String.prototype.realLength = function() { return this.replace(/[^\x00-\ ...

  3. Java字符串中常用字符占用字节数

    java中一个char型的数据(也就是一个字符)占两个字节.而Java中常用的字符包括数字.英文字母.英文符号.中文汉字.中文符号等,若在字符串中包含里面的多种字符,它们是否都占两个字符呢?答案是否定 ...

  4. java字符串转义,把&lt;&gt;转换成<>等字符【原】

    java字符串转义,把<>转换成<>等字符 使用的是commons-lang3-3.4 中的StringEscapeUtils类 package test; import ja ...

  5. 使用 Java 查找字符串中出现次数最多的字符以及出现的次数?

    使用 Java 查找字符串中出现次数最多的字符以及出现的次数? import java.util.HashMap; import java.util.Map; public class TestStr ...

  6. Java求字符串中出现次数最多的字符

    Java求字符串中出现次数最多的字符  [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51933611      Java ...

  7. 循环遍历Java字符串字符的规范方法——类似python for ch in string

    比如我将string作为CNN 文本处理输入: float [] input = new float[maxLength]; // 1 sentence by maxLenWords // int[] ...

  8. java截取字符串中的最后几个字符

    Java中的String类提供了一个substring(int from, int to)方法用于截取字符串中位置为from到to-1位置的字符. 因为字符串的字符位置是从0开始的,而substrin ...

  9. 一个 Java 字符串到底有多少个字符?

    来源:http://dwz.win/jqd 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 \u0000 (0),最大值是\uffff(65535), 也就是一个字 ...

随机推荐

  1. gdb 调试 ncurses 全过程:

    转载地址: http://blog.jobbole.com/107759/ gdb 调试 ncurses 全过程: 发现网上的“gdb 示例”只有命令而没有对应的输出,我有点不满意.gdb 是 GNU ...

  2. iOS推送原理和证书生成简介

    1. 推送流程: Provider: 我们自己的后台服务器: APNS: 苹果的消息推送服务器 (1) 当Provider有消息要推送给手机的时候,先将消息和deviceToken等字段发送到APNS ...

  3. selenium 多表单切换处理(iframe/frame)

    在web应用中,前台网页的设计一般会用到iframe/frame表单嵌套页面的应用.简单的就是一个页面签嵌套多个HEML/JSP文件.selenium webdriver  只能在同一页面识别定位元素 ...

  4. 删除某个ros包之后catkin_make冒错

    CMake Error at /home/ubuntu/Workspaces/rosProject/workspace1/devel/share/costmap_2d/cmake/costmap_2d ...

  5. ros下xtion用法

    xtion用openni2_launch openni2.launch就可以打开,但是在使用过程中有一些定制性问题: 首先弄清openni2_launch 中一些topic都是什么意思 http:// ...

  6. NumPy、SciPy 等Python包在Windows下的whl安装包下载

    http://www.lfd.uci.edu/~gohlke/pythonlibs/ 感谢加利福尼亚大学尔湾分校(University of California, Irvine)荧光动力实验室(瞎翻 ...

  7. android studio 设置

    1.设置启动不打开最近项目 2.设置字体 3.安装逍游模拟器,并与android studio 进行链接 adb connect 127.0.0.1:21503 4.添加第三方包 文件jar.Modu ...

  8. Laravel5.5配置使用redis

    1.安装redis linux上redis的安装与配置 2.安装redis客户端 composer require predis/predis或者安装 PhpRedis PHP 扩展brew inst ...

  9. Ubuntu 16.04下开启Mysql 3306端口远程访问

    原文地址:传送门 0. 前言 网上看到很多开启Mysql远程访问端口,修改的配置文件我都没有找到. 特意查看了我的Linux版本 $ sudo lsb_release -a 显示如下: Distrib ...

  10. 直接利用本地git上传项目到github

    http://m.blog.csdn.net/article/details?id=50441442 本文将详细介绍如何托管你的项目到github上   转载请标明出处: http://blog.cs ...