计算字符串中连续出现子串最多的个数

来源:互联网 发布:淘宝ifashion怎么入驻 编辑:程序博客网 时间:2024/06/09 19:37

转载:

      今天学习了如何在字符串中查找连续出现的子串。看到一篇博文中使用了一种非常简单明了的算法。利用三重循环。具体实现如下所示:

     原理:

                 

     实现代码:

            

voidmain(){

    string str ="abcabcabcccccdefefefefefef";

    int len = str.length();

    int maxCount = 0;

    string longest = "";

    for(int pos1 = 0; pos1 < len; pos1++)

        for(int pos2 = pos1 + 1; pos2 < len;pos2++){

            if(str.substr(pos1,pos2-pos1) ==str.substr(pos2,pos2-pos1)){

                int offset = pos2-pos1;

                int count = 2;

                for(int k = pos2 + offset; k <= len; k +=offset){

                    if(str.substr(pos1,offset)== str.substr(k,offset)){

                        count += 1;

                    }else{

                        Break;}}

                if(count > maxCount){

                    maxCount = count;

                    longest =str.substr(pos1,offset);

                  }}}

cout << longest << ","<< maxCount << endl;}

0 0