针对该问题,有两种解法,无非就是时间和空间的权衡,在实际应用中根据具体情况而定,具体代码就不写了,分析如下,感兴趣的欢迎PK。
第一种解法,牺牲时间换取空间,具体做法是:
1,首先对字符串进行排序,这一步的时间复杂度是固定的。可以有多种排序算法选择。
2,扫描排序后字符串,并且统计遇到的每个字符的数量。方法为:如果下一个字符和当前字符不一致,则当前统计到的数据就是该字符在字符串中出现的次数,此时拿该数据与之前出现过的最大的数据进行比较。
3,扫面结束之后即可以得到出现次数最多的字符,以及出现的次数。
在此过程中空间复杂度为:3,排序时候的空间复杂度为1,扫描阶段需要记录当前字符,当前字符出现的次数,以及曾经出现的最多字符的出现次数。
第二种解法,牺牲空间换取时间,具体做法是:
1,不排序,直接扫描字符串,每遇到一个之前没遇到的字符就把它记下来,并设置其出现的次数为1,如果之前出现,则将该字符的出现次数加1.
2,在每扫描一个字符,并且得到该字符出现的次数时,就与最大的一个次数比较,得到新的最大的次数和字符。
3,扫描结束之后也就得到了结果
这个过程中只需要遍历字符串一次,时间复杂度是线性的,空间复杂度为(字符串中出现的不同的字符串的次数+1)*2.
--有疑问请继续跟帖。
分享到:
相关推荐
笔试题 还是那个查找一个字符串中出现次数最多的字符 java 代码2
查找字符串中出现重复次数最多的字符,面试中经常遇到的面试题,对找工作很有帮助,拿出来与大家一起学习进步。
本文给大家带来两种js中查找字符串中出现次数最多的字符,在这两种方法中小编推荐使用第二种,对js查找字符串出现次数的相关知识感兴趣的朋友一起看看吧
得出一个字符串中的连续出现次数最多的子串
主要为大家详细介绍了Java统计字符串中出现次数最多的字符串以及出现次数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了Js查找字符串中出现次数最多的字符及个数 ,本文分为传统写法和正则写法两种方法给大家介绍了js查找字符串出现次数最多的字符及个数,非常不错,感兴趣的朋友参考下吧
已知字符串“aabbbcddddeeffffghijklmnopqrst”编程找出出现最多的字符和次数,要求时间复杂度小于O(n^2) /******************************************************** Copyright (C), 2016-2017, FileName: main9 ...
select f_find('Ap@2233ll@@l@@','@') from dual 返回结果为5,代表‘@’在该字符串中出现5次。 同理 select f_find('Ap@223SWEQQQ3ll@@l@@','Q') from dual---返回3,代表Q在字符串中出现了3次, select f_find('我...
从字符串中查找字符出现次数的方法和性能对比
最近在项目中遇到这样的需求:求字符串'nininihaoa'中出现次数最多字符。怎么实现呢?下面小编给大家分享具体实现代码,需要的朋友参考下吧
获取字符在字符串中出现的次数VC实现 共享
查找字符串 输入两个字符串,自动搜寻字符串出现次数和出现的位置
介绍了javascript查找字符串中出现最多的字符和次数的小例子,有需要的朋友可以参考一下
一个入门的,简单的小程序,用MFC写的一个查找文件指定字符串的出现总个数、行号以及频率,刚实习的培训第一个任务!!
Option Explicit Private Sub Command1_Click() Dim s As String s = "<table>asdf<table>ade... Dim strFind As String '要查找的子字符串 strFind = " Dim a a = Split(s, strFind) MsgBox UBound(a) End Sub
str代表总字符串,toSearch代表要查找的字符串,适用QTP&UFT;&VBS;,'如有以下例子 str="asasaasasasasasasas485645225" '总字符串 ...看代码直接以文本形式打开,这个vbs可以直接运行就是上面列子的查找字符次数
使用汇编语言实现的两个字符串中 相同处的查找 并显示个数 最多可实现99处相同处的查找并显示