`

查找字符串中出现次数最多的字符

阅读更多
针对该问题,有两种解法,无非就是时间和空间的权衡,在实际应用中根据具体情况而定,具体代码就不写了,分析如下,感兴趣的欢迎PK。

第一种解法,牺牲时间换取空间,具体做法是:
1,首先对字符串进行排序,这一步的时间复杂度是固定的。可以有多种排序算法选择。
2,扫描排序后字符串,并且统计遇到的每个字符的数量。方法为:如果下一个字符和当前字符不一致,则当前统计到的数据就是该字符在字符串中出现的次数,此时拿该数据与之前出现过的最大的数据进行比较。
3,扫面结束之后即可以得到出现次数最多的字符,以及出现的次数。
在此过程中空间复杂度为:3,排序时候的空间复杂度为1,扫描阶段需要记录当前字符,当前字符出现的次数,以及曾经出现的最多字符的出现次数。


第二种解法,牺牲空间换取时间,具体做法是:
1,不排序,直接扫描字符串,每遇到一个之前没遇到的字符就把它记下来,并设置其出现的次数为1,如果之前出现,则将该字符的出现次数加1.
2,在每扫描一个字符,并且得到该字符出现的次数时,就与最大的一个次数比较,得到新的最大的次数和字符。
3,扫描结束之后也就得到了结果

这个过程中只需要遍历字符串一次,时间复杂度是线性的,空间复杂度为(字符串中出现的不同的字符串的次数+1)*2.

--有疑问请继续跟帖。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics