一个字符串中连续出现次数最多的子串Java(2)
来源:互联网 发布:ubuntu 忘记root密码 编辑:程序博客网 时间:2024/05/09 01:44
求一个字符串中连续出现次数最多的子串,但网上大部分没有通过测试的java代码,其中bug的很多!
下面的java代码绝对可以得到我们想要的结果,并附上详细的介绍。
import java.util.Scanner;public class StringDeal {public static void main(String[] args) {Scanner scann = new Scanner(System.in);String s = scann.nextLine();System.out.println(search(s));scann.close();}/** * 功能:求一个字符串中连续出现次数最多的子串 * @param str * @return *//* * 把字符串用后缀树的形式表现出来如下: * a b c a b c a b c d .substring[0] * b c a b c a b c d ...substring[1] * c a b c a b c d .....substring[2] * a b c a b c d .......substring[3] * b c a b c d .........substring[4] * c a b c d ...........substring[5] * a b c d .............substring[6] * b c d ...............substring[7] * c d .................substring[8] * d ...................substring[9] */public static String search(String str){int len = str.length(); int maxCount = 0; String longest = ""; for(int pos1 = 0; pos1 < len; pos1++) for(int pos2 = pos1 + 1; pos2 < len && 2*pos2-pos1 <=len; pos2++){ // 保证 2*pos2-pos1 <=len , 不能substring(pos2,2*pos2-pos1)会出现越界 int count = 1; if(str.substring(pos1,pos2).equals(str.substring(pos2,2*pos2-pos1))){ // str.substring(pos2,2*pos2-pos1)相当于子串substring[pos2] int offset = pos2-pos1; count++; for(int s = pos2 + offset; s < len && s+offset <= len; s += offset){ if(str.substring(pos1,pos1+offset).equals(str.substring(s,s+offset))){ count++; }else{ break; } } if(count > maxCount){ maxCount = count; longest = str.substring(pos1,pos1+offset); } } } return (longest+","+String.valueOf(maxCount));}
0 0
- 一个字符串中连续出现次数最多的子串Java(2)
- 编程珠玑(四)求一个字符串中连续出现的次数最多的子串
- 求一个字符串连续出现次数最多的子串
- 字符串中连续子串出现次数统计,获取连续出现次数最多的子串
- 找出字符串中连续出现次数最多的子串
- 字符串中连续出现次数最多的子串
- 求字符串中连续出现次数最多的子串
- 找出字符串中连续出现次数最多的子串
- 寻找字符串中连续出现次数最多的子串
- 求字符串中连续出现次数最多的子串
- 找出字符串中连续出现次数最多的子串
- 重复子串问题(二):求一个字符串中连续出现次数最多的子字符串
- 求一个字符串中连续出现并且出现次数最多的子串.
- 字符串---求一个字符串中连续出现次数最多的子串
- 求一个字符串中出现次数最多的子串(并不是连续的)
- 求一个字符串中连续出现的次数最多的子串[C语言实现]
- 求一个字符串中连续出现的次数最多的子串
- 求一个字符串中连续出现的次数最多的子串
- 自建一个本地dns归属地查询系统
- AngularJS第五篇
- hdu 3939 Sticks and Right Triangle 勾股数+容斥原理+欧拉函数
- 分享一段优雅的代码,测试编译通过。摘自《设计模式沉思录》,稍作修改,否则编译不过
- QT学习 渐变填充QGradient
- 一个字符串中连续出现次数最多的子串Java(2)
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column '?°?????±±???' in 'field l
- 剑指offer 2.2 - C++ 类型转换相关的关键字
- 关于vim替换中遇到特殊字符的转义处理
- Android抽象布局——include、merge 、ViewStub的使用
- Python 发送 RMAN 备份 Log 脚本
- 简单DP
- 注解,反射在android View,Event中的奇妙实现
- 算法 - 动态规划