java 找出所有最長連續重複子串及其個數
阿新 • • 發佈:2019-02-12
import java.util.*;
class Pair{
int n;
String s;
Pair(int n,String s){
this.n = n;
this.s = s;
}
}
public class Main{
public static List<Pair> fun(String str){
List<String> subs = new ArrayList<String>();
List<Pair> res = new ArrayList<Pair>();
int len = str.length();
for (int i = 0; i < len; i++)
{
String temp = str.substring(i, str.length());
subs.add(temp);
}
int maxCount = 1;
String sub = "";
int subLen = 1;
int count = 1;
//i為子串的長度
for (int i = 1; i < len; i++)
{
for (int j = 0; j < len - 1; j++)
{
count = 1;
for (int k = j + 1; k <= j + i && subs.get(k).length() >= i; k++)
{
String sub1 = subs.get(k).substring(0, i);
String sub2 = subs.get(j).substring(0, i);
if (sub1.equals(sub2))
{
count = count + 1;
break;
}
}
if (count >= 2)
{
if (i > subLen)
{
res.clear();
}
sub = subs.get(j).substring(0, i);
maxCount = count;
res.add(new Pair(maxCount, sub));
subLen = i;
}
}
}
class Pair{
int n;
String s;
Pair(int n,String s){
this.n = n;
this.s = s;
}
}
public class Main{
public static List<Pair> fun(String str){
List<String> subs = new ArrayList<String>();
List<Pair> res = new ArrayList<Pair>();
int len = str.length();
for (int i = 0; i < len; i++)
{
String temp = str.substring(i, str.length());
subs.add(temp);
}
int maxCount = 1;
String sub = "";
int subLen = 1;
int count = 1;
//i為子串的長度
for (int i = 1; i < len; i++)
{
for (int j = 0; j < len - 1; j++)
{
count = 1;
for (int k = j + 1; k <= j + i && subs.get(k).length() >= i; k++)
{
String sub1 = subs.get(k).substring(0, i);
String sub2 = subs.get(j).substring(0, i);
if (sub1.equals(sub2))
{
count = count + 1;
break;
}
}
if (count >= 2)
{
if (i > subLen)
{
res.clear();
}
sub = subs.get(j).substring(0, i);
maxCount = count;
res.add(new Pair(maxCount, sub));
subLen = i;
}
}
}