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

2021-06-14 23:10:58 字數 884 閱讀 3047

演算法描述

首先獲得字尾陣列,然後

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比較......

......

使用字尾陣列方便程式設計實現

[cpp]view plain

copy

//vs2005

#include "stdafx.h"

#include 

#include 

#include 

#include 

using

namespace

std;  

pair

,string> fun(

const

string &str)  

for(i=0;i

if(count>maxcount)  

}  }  }  

return

make_pair(maxcount,substr);  

}  int

_tmain(

intargc, _tchar* argv)    

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

首先要搞清楚題目關於子串的概念。1.乙個字元當然也算子串。而題目要求連續出現次數最多的子串。如 abcbcbcabc,連續出現次數最多的子串是bc,連續出現三次。abcccabc,連續出現次數最多的子串是c,連續出現三次。演算法描述 首先獲得字尾陣列 a b c b c b c a b c subs...

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

分析 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 ...