算法练习:求字符串的最长重复子串(Java实现)
1. 求字符串的最长重复子串
例如:aaaaaaaaabbbbcccaaassscvvv这里面的最长重复子串为aaaaaaaaa
算法思路:算法时间复杂度(O(n))
1. 将这一个字符串先转成char数组;
2. 将这一char数组进行遍历
3. 比较char数组中第i-1个与第i个的字符是否相等,如果不相等则进行截取字符串长度,然后将其进行比较,如果其长度比现有长度大,则进行替换,否则什么也不做
算法实现:(Java实现)
private static String reSubStr(String str){
/**
* 设置变量
* start:开始
* end:结束
* maxStart:最长子串开始位置
* maxEnd:最长子串结束位置
*/
int start=0,end=1,maxStart=0,maxEnd=1;
char[] chars = str.toCharArray();
for (int i = 1; i < chars.length; i++) {
//判断如果不相等,则计算器长度
if(chars[i-1]!=chars[i]) {
//设置其重复子串结束位置
end=i;
//子串长度
int len = end - start;
//子串长度大于现有的最大子串长度
if (len > (maxEnd - maxStart)) {
//则进行赋值
maxStart = start;
maxEnd = end;
}
//开始截取位置为end结束位置
start = end;
}
}
//截取字符串
return str.substring(maxStart,maxEnd);
}
算法练习:求字符串的最长重复子串(Java实现)的更多相关文章
- 求两个字符串的最长公共子串——Java实现
要求:求两个字符串的最长公共子串,如“abcdefg”和“adefgwgeweg”的最长公共子串为“defg”(子串必须是连续的) public class Main03{ // 求解两个字符号的最长 ...
- poj 1743 男人八题之后缀数组求最长不可重叠最长重复子串
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14874 Accepted: 5118 De ...
- poj 2774 后缀数组 两个字符串的最长公共子串
Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total Submissions: 31904 Accepted: 12 ...
- 【poj1743-Musical Theme】不可重叠最长重复子串-后缀数组
http://poj.org/problem?id=1743 这题是一道后缀数组的经典例题:求不可重叠最长重复子串. 题意: 有N(1 <= N <=20000)个音符的序列来表示一首乐曲 ...
- poj 3261 求可重叠的k次最长重复子串
题意:求可重叠的k次最长重复子串的长度 链接:点我 和poj1743差不多 #include<cstdio> #include<iostream> #include<al ...
- POJ-1743 Musical Theme 字符串问题 不重叠最长重复子串
题目链接:https://cn.vjudge.net/problem/POJ-1743 题意 给一串整数,问最长不可重叠最长重复子串有多长 注意这里匹配的意思是匹配串的所有元素可以减去或者加上某个值 ...
- POJ 3261 Milk Patterns (求可重叠的k次最长重复子串)+后缀数组模板
Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7586 Accepted: 3448 Cas ...
- poj 3261 Milk Patterns(后缀数组)(k次的最长重复子串)
Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7938 Accepted: 3598 Cas ...
- 【POJ1743】不可重叠最长重复子串
题意:求一个字符串里两个不重叠的最长重复子串 代码如下: #include<cstdio> #include<cstdlib> #include<cstring> ...
随机推荐
- Auzre系列1.1.1 —— 安装用于 IntelliJ 的 Azure 工具包
(文中大部分内容(95%)Azure官网上有,我只是把我自己实际操作中遇到的问题在这里阐述一下.) 先决条件 若要完成文章中的步骤,需要安装用于 IntelliJ 的 Azure 工具包,该工具包需要 ...
- [转帖]KMS 是什么 以及 优缺点
产品激活 比如Windows激活 , office激活 等激活的原理是什么? KMS等激活工具安全吗? http://www.cnblogs.com/flowerslip/p/8370832.html ...
- spring后置处理器BeanPostProcessor
BeanPostProcessor的作用是在调用初始化方法的前后添加一些逻辑,这里初始化方法是指在配置文件中配置init-method,或者实现了InitializingBean接口的afterPro ...
- python之路--初识函数
一 . 函数 什么是函数 f(x) = x + 1 y = x + 1 # 函数是对功能或者动作的封装 函数的语法 def 函数名(): 函数体 调用: 函数名() def play(): print ...
- k8s授权访问
#监听本地的8080端口 kubectl proxy --port=8080 [root@k8s-m ~]# kubectl proxy --port=8080Starting to serve o ...
- WPF中自定义MarkupExtension
在介绍这一篇文章之前,我们首先来回顾一下WPF中的一些基础的概念,首先当然是XAML了,XAML全称是Extensible Application Markup Language (可扩展应用程序标记 ...
- Postman & API
Postman & API https://www.getpostman.com/ https://www.getpostman.com/downloads/ Postman Canary h ...
- python数据结构与算法学习自修第二天【时间复杂度与大O表示法】
#!/usr/bin/env python #! _*_ coding:UTF-8 _*_ from Queue import Queue import time que = Queue() time ...
- vue自定義指令
自定義指令可以允許代碼複用, 全局自定義指令 vue.directive('指令名',{鉤子函數:指令函數}) 局部自定義指令: vue({ directives:{指令名:{鉤子函數:指令函數} } ...
- Nginx Tcp四层反向代理
L:117 //nginx反向代理代码 server{ listen ; proxy_pass localhost:; //指向上游服务器 proxy_protocol on; //启用对上游传递协议 ...