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. [Leetcode Week8]Subsets II

    Subsets II 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/subsets-ii/description/ Description Given ...

  2. OC的UUID生成

    NSString *uuidStr = [[NSUUID UUID] UUIDString];

  3. 分析函数调用堆栈的原理和Delphi实现

    来自:http://blog.163.com/liuguang_123/blog/static/816701920105262543890/ ----------------------------- ...

  4. 解决Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle.

    有时候打开AndroidStudio项目,没问题啊,昨天还打开没事的,今天打不开了或者你同步了一下项目,报错了.很无辜有没有.有时候多开机几次,多关几次AS,又莫名好了. 尝试过很多方法无效,这个文章 ...

  5. java 编码分析

    三.源码分析:    更改字符串编码的步骤为:    1.调用String的getByte方法对字符串进行解码,得到字符串的字节数组(字节数组不携带任何有关编码格式的信息,只有字符才有编码格式)    ...

  6. POJ 2018 Best Cow Fences

    斜率优化. 设$s[i]$表示前缀和,$avg(i,j)=(s[j]-s[i-1])/(j-(i-1))$.就是$(j,s[j])$与$(i-1,s[i-1])$两点之间的斜率. 如果,我们目前在计算 ...

  7. amq笔记:记一个关于PooledConnectionFactory的问题

    替人排查一个关于amq连接数的问题,使用PooledConnectionFactory进行连接池管理,设置了连接数上限为3,但部署到服务器之后,瞬间建立了几百个连接,用netstat -an 查看,发 ...

  8. 1087: Common Substrings (哈希)

    1087: Common Substrings Time Limit:3000/1000 MS (Java/Others)   Memory Limit:163840/131072 KB (Java/ ...

  9. Linux命令之ip

    ip [ OPTIONS ] OBJECT { COMMAND | help } 这一条命令几乎包含了所有使用方法,其中 对象OBJECT={ link | addr | addrlabel | ro ...

  10. RPD Volume 168 Issue 4 March 2016 评论2

    Influence of the phantom shape (slab, cylinder or Alderson) on the performance of an Hp(3) eye dosem ...