84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
如题java实现求字符串中出现次数最多的字串(单个字符不算)如"abcbcbcabc"的最终答案是bc 共出现了4 次,
走同样的路,发现不同的人生
假设字符串S中子字符串s出现x次,那么子串s的子串s2,至少也会出现x次,或者更多
又单个字符不算,那么问题来了,最终出现次数最多的子串之一,必然是2个字符的子串
如果只是想找到任意一个符合条件的,那只需要找一个2字符的子串
如果是要把所有出现次数=最大出现次数的子串全找出来就稍微要复杂一点.
1.假设字符串S长度是N2.把字符串中相邻的2个字符组合,变成N-1个子串,然后统计2字符字节串,看看哪个出现的最多。3.如果没有哪个2字符字符串次数大于1,搜索结束4.如果有多个2字符字符串次数相等切大于1,那么对比这些2字符字符串,是否存在第一个字符串的结尾等于第二个字符串开头的字符串,比如 ab 出现3次, bc出现3次, 那么abc有可能也会出现多次, 如果出现这种情况,就判断3字符字符串的出现次数,如果次数小于2字符字符串出现的次数,那么答案就是2字符字符串,否则就可能是3字符字符串。5.然后再向上继续检测4,5,6字符字符串的情况
另外,需要明确一下字符串出现次数的统计算法,比如 aaaaaa中子串aa到底是出现了3次还是5次?
感觉正则好弄一点。不用正则肯定需要迭代或者递归解决
假设字符串S中子字符串s出现x次,那么子串s的子串s2,至少也会出现x次,或者更多
又单个字符不算,那么问题来了,最终出现次数最多的子串之一,必然是2个字符的子串
如果只是想找到任意一个符合条件的,那只需要找一个2字符的子串
如果是要把所有出现次数=最大出现次数的子串全找出来就稍微要复杂一点.
1.假设字符串S长度是N
2.把字符串中相邻的2个字符组合,变成N-1个子串,然后统计2字符字节串,看看哪个出现的最多。
3.如果没有哪个2字符字符串次数大于1,搜索结束
4.如果有多个2字符字符串次数相等切大于1,那么对比这些2字符字符串,是否存在第一个字符串的结尾等于第二个字符串开头的字符串,比如 ab 出现3次, bc出现3次, 那么abc有可能也会出现多次, 如果出现这种情况,就判断3字符字符串的出现次数,如果次数小于2字符字符串出现的次数,那么答案就是2字符字符串,否则就可能是3字符字符串。
5.然后再向上继续检测4,5,6字符字符串的情况
另外,需要明确一下字符串出现次数的统计算法,比如 aaaaaa中子串aa到底是出现了3次还是5次?
感觉正则好弄一点。不用正则肯定需要迭代或者递归解决