字串問題 求乙個字串中連續出現次數最多的子串

2021-09-06 12:02:16 字數 1704 閱讀 6860

2013-09-14 10:47:39

在面試寶典上看到的題目,自己做了一下,用了c++中的string類,比較方便。

思路:遍歷源字串的每乙個字元,以該字元為首的重複子串的長度為1到以該字元為首的字尾字串(即以該字串為首,到字元結尾的子串,比如abdcef的第三個字尾字串即為dcef)的長度的一半;

對所有的子串,判斷連續重複出現的次數,如果子串連續重複出現的次數大於當前最大連續重複出現的次數,則更新最大連續重複出現的次數。

注意:vc6.0 對c++的stl支援不是很好,有的方法不支援,如下面**中的 srcstr.clear();在vs2008中可以執行無措,但在vc6.0中就會報錯如下:

error c2039: 'clear' : is not a member of 'basic_string,class std::allocator>'

解決方法如下:

用可以完成相同功能的substr.erase(0,substr.length());替代,不會報錯。

目前還沒發現其他更好的辦法,如有發現,還請分享一下哦!

1 #include 2 #include 3 #include 45

using

namespace

std;67

//對string型別,如何測試輸入的有效性

string srcstr,string &substr,size_t &count)938

else

3946

break;47

}48}49

}5051 ++srccurindex;52}

5354

return

posofsubstr;55}

5657

void

testdriver()58;

60 size_t arraylength = 5;61

62string

srcstr;

63string

substr;

64 size_t count = 0

;65 size_t posofsubstr = 0;66

67for (size_t index = 0;index < arraylength;++index)

6878}79

80int

main()

81

測試結果:

the source string

is : 0123456

the sub

is : 1

the source

string

is: abcdef

the sub

: ais : 1

the source

string

is: abcbcbcedhellobc

the sub

: bc

is : 3

the source

string

is: abcbcbcabc

the sub

: bc

is : 3

the source

string

is: abcccabc

the sub

: cis : 3

press any key to

continue

字串問題 求乙個字串中連續出現次數最多的子串

2013 09 14 10 47 39 在面試寶典上看到的題目,自己做了一下,用了c 中的string類,比較方便。思路 遍歷源字串的每乙個字元,以該字元為首的重複子串的長度為1到以該字元為首的字尾字串 即以該字串為首,到字元結尾的子串,比如abdcef的第三個字尾字串即為dcef 的長度的一半 對...

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

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

乙個字串演算法問題

已知一組數字 21,25,11,32,12,35,55,77,66 要求按以下規則進行排序 第乙個數最大,第二個數最小,第三個數是剩下中的最大的,第四個數是剩下中的最小的,依此類推,請設計乙個字元介面的程式解決之 c codes as below class program console.read...