尋找乙個字串中連續出現次數最多的子串

2021-06-29 15:12:44 字數 1366 閱讀 2138

首先要搞清楚題目關於子串的概念。

1.乙個字元當然也算子串。而題目要求連續出現次數最多的子串。

如:abcbcbcabc,連續出現次數最多的子串是bc,連續出現三次。

abcccabc,連續出現次數最多的子串是c,連續出現三次。

演算法描述

首先獲得字尾陣列:

a b c  b c b c a b c .substr[0]

b cb c b c a b c ....substr[1]

cb c b c a b c .......substr[2]

b c b c a b c

..........substr[3]

c b c a b c .............substr[4]

b c a b c ...............substr[5]

c a b c  .................substr[6]

a b c.. ...................substr[7]

b c ........................substr[8]

c............................substr[9]

然後1.第一行第乙個字元a,與第二行第乙個字元b比較,不等,則

2.第一行前兩個字元ab,與第三行前兩個字元cb比較,不等,則

3.第一行前三個字元abc,與第四行前三個字元bcb比較,不等,則

4.第一行前四個......

上述過程就相當於在原始字串中,

第一趟,a與b比較,ab與cb比較,abc與bcb比較,abcb與cbca比較,abcbc與bcabc比較,abcbcb與cabc比較......

第二趟,b與c比較,bc與bc比較(相等,則繼續向後取長度為2的子串比較,碰到不等為止,本例中因碰到ab停止),bcb與cbc比較......

第三趟,c與b比較,cb與cb比較(相等),cbc與bca比較......

**實現:

#include #include using namespace std;

void main()

else

}if (count > maxcount)

}}cout << longest << " 出現次數:" << maxcount << endl;

system("pause");

}#include #include #include using namespace std;

pairfun(const string &str)}}

}return make_pair(maxcount, substr);//生成pair

}int main()

尋找乙個字串中連續出現次數最多的子串

演算法描述 首先獲得字尾陣列,然後 1.第一行第乙個字元a,與第二行第乙個字元b比較,不等,則 2.第一行前兩個字元ab,與第三行前兩個字元cb比較,不等,則 3.第一行前三個字元abc,與第四行前三個字元bcb比較,不等,則 4.第一行前四個.上述過程就相當於在原始字串中,第一趟,a與b比較,ab...

計算乙個字串中每乙個字元出現的次數

分析 1.使用scanner獲取使用者輸入的字串 2.建立map集合,key是字串中的字元,value是字元的個數 3.遍歷字串,獲取每乙個字元 4.使用獲取到的字元,去map集合判斷key是否存在 通過字元 key 獲取value 字元個數 value put key,value 把新的value...

在乙個字串中尋找另外乙個字串

在乙個字串中尋找另外乙個字串 public class text foundit true break test system.out.println foundit?found it didn t find it 該段程式有點難以理解,主要就是if語句的理解,if searchme.charat ...