查找字符串中最长重复字符的子串

temppos:记录子字符串开始的下标

list:存放重复的子字符串

public class RepeatString {

private static void longestdupString(String s) {

if (s == null || s.length() == 0) {

return;

}

char temp = s.charAt(0);

int temppos = 0;

List<String> list = new ArrayList<String>();

for (int i = 1; i < s.length(); i++) {

if (i == s.length() -1) {

if (list.size() == 0) {

list.add(s);

break;

}else {

if ((i+1 - temppos) > list.get(0).length()) {

list.clear();

list.add(s.substring(temppos, i+1));

}else if((i+1 - temppos) == list.get(0).length()){

list.add(s.substring(temppos, i+1));

}else {

}

}

}

if (s.charAt(i) == temp) {

continue;

}

if (list.size() == 0) {

list.add(s.substring(temppos, i));

} else {

if ((i - temppos) > list.get(0).length()) {

list.clear();

list.add(s.substring(temppos, i));

}else if((i - temppos) == list.get(0).length()){

list.add(s.substring(temppos, i));

}else {

}

}

temp = s.charAt(i);

temppos = i;

}

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i));

}

}

public static void main(String[] args){

longestdupString("aaaaabbcaadddddseefgfsggggsssss");

}

时间: 2024-10-09 08:11:32

查找字符串中最长重复字符的子串的相关文章

字符串中连续出现最多的子串 &amp; 字符串中最长重复子串

字符串中连续出现最多的子串 & 字符串中最长重复子串 字符串中连续出现最多的子串 & 字符串中最长重复子串,这两个问题都可以用后缀数组来表示,至于后缀数组可以参考编程珠玑P156:后缀数组就是定义一个数组指针,分别指向字符串中的对应位置,如下: a b c a b c a b c d e .substr[0] b c a b c a b c d e ....substr[1] c a b c a b c d e .......substr[2] a b c a b c d e ......

找出一个字符串中最长重复次数的子字符串,并计算其重复次数

原题 找出一个字符串中最长重复次数的子字符串,并计算其重复次数.例如:字符串"abc fghi bc kl abcd lkm abcdefg",并返回"abcd"和2. 我的思路 为了方便表述,我们使用变量src作为原字符串,sub_str作为子字符串. 由于题目要求寻找至少重复2次的最长的子字符串,重点在于最长的子字符串,而不在于重复的最多次数.因此我们可以从长度最长的字符串入手,计算其重复次数.只要重复达到2次,即可返回该字符串. 显然长度最长的子字符串就是原串

Cracking-- 1.1 判断字符串中是否有重复字符

第三种方法为位运算的方法. 位运算符: << 左移  & 与 | 或 #include <iostream> #include <string> #include <unordered_set> #include <vector> #include <unordered_map> using namespace std; //时间 O(n) 空间 O(1) bool hasSame(string str) { if(str.s

查找字符串中最长子串

查找字符串中最长子串,例如“I love OC”最长子串为“love” 1 void findMaxLengthSubstr1(char *src) 2 { 3 char *start = src; 4 char *end = src; 5 unsigned int maxLength = 0; 6 unsigned int tempLength = 0; 7 // 此处子串长度不能超过100 8 char maxStr[100] = "0"; 9 10 if (src == NULL

查找字符串中最长无重复字符的子串

设定一个当前子字符串:tempString 设定一个保持最长无重复子串的数组:list 思路: 从第一个字符开始判断, 如果当前子串不包括当前的字符,则当前子串加入当前的字符成为新的当前子串, 如果当前子串包括当前的字符,判断当前字符在当前字符串中的位置,根据这个位置把字符串分成两个字符串,如果后面一个末尾加当前字符为新的当前子字符串,判断当前子串跟list数组中的子串长度,如果当前子串长,则清空list,把当前子串加入:如果相等,直接将当前子串加入list. 最后list的中的子字符串就是最长

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

方法一:利用js的split和join方法 1 function foo(str){ 2 var max = 0; 3 var char = []; // 存放出现次数最多的字符 4 while(str){ 5 var head = str.charAt(0); 6 var arr = str.split(head); 7 var num = str.length - arr.join('').length; 8 if(num > max){ 9 max = num; 10 char.lengt

代码:字符串中连续与重复字符判断

字符串操作: int consecutiveCharMaxCount( char *str) { char *pstr = NULL; char *p = NULL; int value = 0; int incN = 1; int decN = 1; int maxCount = 0; char chrp = 0; char chrn = 0; if(str == NULL) return ERROR; p = str; while(*p != '\0') { pstr = p; incN =

获取你所查找字符串中的某一个字符的所在位置

//获取截取的第一个字符所在 int subA = jsonTest.LastIndexOf("["); //获取截取的第二个字符所在 int subB = jsonTest.LastIndexOf("]");

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

var str = 'safsafsagadsfshjsadfhsajdhgsaaaaaaaaaaaafsafasdvgdasfsajkodhsaodsagdusiagdusaidhsajdhsajdhsajdhsaohdiusahduisahdusadhudhufsaaaaaagfdghdfhdfhdfhdfgjgfjfgjfddfhfghhdfhdfhdfhdsfgfdghdfhdghfgfdghdfgdfgdfgdsdfgsdfgsgdfgsdgsdfdsfg'; var obj = {}