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 45using
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 stringis : 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...