`
dyllove98
  • 浏览: 1376055 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:38147
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:78287
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:131410
社区版块
存档分类
最新评论

找出给定字符串中出现最多的字符和次数

 
阅读更多

    “给定一个字符串,找出这个字符串中出现最多的字符和次数”,笔试碰到的一个问题,还是比较简单的,贴出来与大家分享。

public class CharCount {
    public static void Charcount(String string) {
        if (string == null)
            return;
        int[] count = new int[string.length()];

        for (int i = 0; i < count.length; i++) {
            // 将字符串中索引字符存在临时变量中
            char mid = string.charAt(i);
            for (int j = 0; j < count.length; j++) {
                if (mid == string.charAt(j))
                    count[i]++;
            }
        }
        // 得到次数最多的字符
        int index = 0;
        int max = count[0];
        for (int i = 0; i < count.length; i++) {
            if (max < count[i]) {
                max = count[i];
                index = i;
            }
        }
        System.out.println();
        System.out.println("字符=" + string.charAt(index));
        System.out.println("次数=" + count[index]);
    }
    public static void main(String[] args) {
        Charcount("ABAACGDHGSTHJHH");
    }
}

 

        上面的这算法当中有两个for 的嵌套循环 还有一个 for 循环的得到次数最多字符的操作。时间复杂度也不难得到是O(n^2).

        如果遇到数据量比较大的,上述这个算法还是有点不尽人意。

        如果在给定字符串的时候,就将字符串中出现的字符都保存起来,这里所说的字符是只要出现一次,不管出现几次值保存一次,然后按照这个保存起来的表,对字符串来 for 的嵌套循环,应该会节约时间,遇到出现的字符不多,但字符串很长的时候,能够节省大把的时间。

import java.util.ArrayList;

public class CharCount {
    public static void Charcount(String string) {
        //ArrayList 保存字符串中出现的字符
        ArrayList list=new ArrayList(string.length());
        for(int i=0;i<string.length();i++){
            //只要表中不包含,将它添加到表中
            if(!list.contains(string.charAt(i))){
                list.add(string.charAt(i));
            }
        } 
        int[] count = new int[list.size()];
        //这里外循环就不用遍历整个字符串,仅仅按照List表中所保存的字符进行遍历
        for(int i=0;i<list.size();i++){
            char mid=(Character) list.get(i);
            for(int j=0;j<string.length();j++){
                if(mid==string.charAt(j)){
                    count[i]++;
                }
            }
        }
        int index = 0;
        int max = count[0];
        for (int i = 0; i < count.length; i++) {
            if (max < count[i]) {
                max = count[i];
                index = i;
            }
        }
        System.out.println("字符串中出现的字符:");
        for(int k=0;k<list.size();k++)
        {
            System.out.print(list.get(k)+" ");
        }
        System.out.println();
        System.out.println("字符" + list.get(index)+"出现的次数最多");
        System.out.println("共出现次数为: " + count[index]);
    }
    
    
    public static void main(String[] args) {
        Charcount("ABAACGDHGSTHJHH");
    }
}

 

 

 

分享到:
评论

相关推荐

    java 面试题 经典收藏

    公元1年1月1日为星期一给定字符串,找出出现次数最多的字符,并且计算次数。给定字符串,找出出现次数最多的字符,并且计算次数。编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的...

    KMP算法,求子字符串位置

    数据结构书上的KMP算法,书上的算法看的不太明白,自己写了一个,有点罗嗦。 也是自己写的,容易看懂

    LeetCode判断字符串是否循环-Leetcode:力码

    给定两个字符串,求串a中的每个字符是否可以在串b中找到对应的字符,串b中的每个字符只可以使用一次,但是字符可以重复出现。 2017年4月14日 349 求两个数组的交集,不允许出现重复的数字。 404 求左子树节点之和。 ...

    最大公共字符串leetcode-python-gibberish:技术面试数据结构与算法练习题

    如何找到给定字符串的第一个非重复字符? 如何计算字符串中给定字符的出现次数? 如何检查两个字符串是否为 Anagram? 在一个数组中存储了 1-100 个数字,缺少一个数字如何找到? 在一个数组中 1-100 多个数字是重复...

    Java 面试题及参考答案

    给定一个字符串,找出其中出现次数最多的字符,并输出其出现次数。 1:字符串由字母、数字以及特殊字符组成,其中字母区分大小写。 2:如果出现次数最多的字符有多个,则输出其中任意一个即可。 3:考虑字符串为空的...

    浙江大学C语言上机练习题附答案

    40024 找出各位数字的立方和等于它本身的数 36 40025 找完数(改错题error04_2) 38 40027 从高位开始逐位输出一个整数的各位数字(选作) 39 40052 判断素数 40 40053 逆序输出整数 41 40054 输出斐波那契序列 42 第7...

    算法实验-串匹配问题-采用分治法求解最大连续子序列和问题-用分治策略求众数问题-最近点对问题

    给定一段文本,在该文本中查找并定位任意给定字符串。 要求: (1)实现BF算法; (2) 实现BF算法的改进算法:KMP算法 2.采用分治法求解最大连续子序列和问题 给定一个有n(n≥1)个整数的序列,要求求出其中...

    Lotus公式语言函数简介

    @DbLookup 1 给定一个值,在一个指定的视图(或文件夹)里查找,找出视图里的第一个排序列里包含该值的所有文档。对每个选中的文档,@DbLookup 返回视图里指定列的内容,或者返回一个指定域的内容 2 使用 ODBC.INI ...

    review_task_reports

    计算字符串中出现“绿色”的次数计算字符串中出现“琥珀”的次数计算字符串中出现“红色”的次数每个这些值都将输出到字符串中,其类别在前它和一个“:”分隔。 然后每个将由新的换行符'\ n'替换。 任何空字符串都...

    leetcodepython001-Python-Exercise:用于增强Python技能的个人存储库

    找出字符串或对象是否具有唯一值。 挑战 7 :star: :star: 检查所有相加的数字是否等于数组中的最大数字 挑战8 :star: :star: 动态过滤数组的唯一值 挑战 9 :star: 找到重复字母最多的第一个单词 挑战 10 :star: 查找...

    leetcode第321题-javascript-tavascript:技术面试数据结构与算法练习题

    计算字符串中字符的出现次数 从字符串中删除特定字符 你如何在整数数组中找到第二大数字? 给定两个数组,1,2,3,4,5 和 2,3,1,0,5 找出第二个数组中不存在的数字。 查找给定数字的索引 如何从数组中删除重复元素? ...

    C#基础每日练习2018.12.10

    3. 请用户输入一个字符串,计算字符串中的字符个数,并输出。 4. 用方法来实现:计算两个数的最大值。思考:方法的参数?返回值?扩展(*):计算任意多个数间的最大值(提示:使用可变参数,params)。 5. 用方法来...

    LeetCode判断字符串是否循环-LeetCode_May_30_Day_Challenge:LeetCode_May_30_Day_Cha

    并且你想找出第一个坏的,这会导致后面所有的都是坏的。 您将获得一个 API bool isBadVersion(version),它将返回版本是否错误。 实现一个函数来查找第一个坏版本。 您应该尽量减少对 API 的调用次数。 示例:给定 n...

    Python–HackerRank习题

    Python–HackerRank习题1,给定列表,找出第二大的数2,打印成绩倒数第二的同学名字3,使用zip(*[iter(s)]*5)按照指定长度5,截取字符串4,计数类collections.Counter5,统计字符串中字母出现次数 并按频次排序6,将...

    leetcode算法题主函数如何写-algorithm:关注算法,题目来源于LeetCode。使用Java8来实现,涵盖:数组、链表、栈、堆、

    涵盖:数组、链表、栈、堆、二叉树、BST树等数据结构,算法有搜索、排序、去重、找出现次数最多等问题。 使用Java8来实现 2. 两数相加 迭代法 因为从链表往下个节点变换时,依次是个位、十位、百位 从链表头向下依次...

    几道大数据面试题.pdf

    Step3:找出每个⼩⽂中出现频率最⼤的IP(可以采⽤hash_map进⾏频率统计,然后再找出频率最⼤的⼏个)及相应的频率; Step4:在这1000个最⼤的IP中,找出那个频率最⼤的IP,即为所求。 草图如下:

    leetcode添加元素使和等于-My_C_Test:一些C(编程语言)测试

    找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。 输入: s = "aaabb", k = 3 输出: 3 最长子串为 "aaa" ,其中 'a' 重复了 3 次。 输入: s = "ababbc",...

    Leetcode最小费用旅行-coding-challenges:需要掌握的世界级编码挑战

    找出给定序列中不出现的最小正整数。 - 计算道路上过往车辆的数量。 - 从一系列 DNA 序列中找出最小的核苷酸。 - 找到包含至少两个元素的任何切片的最小平均值。 - 计算范围 [a..b] 内可被 k 整除的整数数。 - 为...

    扔鸡蛋leetcode-Leetcode:力码

    找出出现奇数次的次数 136.单号 9.最大和连续子阵列 53. 最大子阵列 10. 找到缺失的数字(给定一个 n-1 个整数的列表,这些整数在 1 到 n 的范围内。列表中没有重复项) 268.漏号 11. 编写代码来确定两棵树是否相同 ...

Global site tag (gtag.js) - Google Analytics