找出一行字符串中的连续出现次数最多的字串

找出一行字符串中的连续出现次数最多的字串

C++代码

描述:面试题:找出一行字符串中的连续出现次数最多的字串,如"sbsdadada"的结果就是da

#include <iostream>

#include <string>

#include <vector>

using namespace std;



//先找出字符串的所有子串

//

void findTheMostSame(string str){

    int length=str.length();

    vector<string> substrs, results;

    int i=0,count=1,maxcount=2;   

    string t ;

    for (int i=0; i<length; i++) {

        substrs.push_back(str.substr(i,length-i));

    }//不采集的话,后面再采集就很麻烦

    

    for ( i=0; i<length; i++) {

        for (int j=i+1; j<length; j++) {//明白初始条件j-i=1,然后j++的条件的含义么,得看往下看ji怎么用才会明白

            count=1;//重新计数

            if(substrs[i].substr(0,j-i)==substrs[j].substr(0,j-i)){//明白了么,连续子串对比

               //cout<<substrs[j].substr(0,j-i)<<endl;

                count++;

                for (int d=j-i,k=j+d;k<length ;k+=d ) {

                    if (substrs[k].substr(0,d)==substrs[i].substr(0,d)) {

                        count++;  


                    }

                    else{

                        

                        break;

                    }    

                        


                }//k

            }    

                

           

            if (count>=maxcount) {

            maxcount=count;

            cout<<substrs[i].substr(0,j-i)<<endl;

                cout<<"次数"<<maxcount<<endl;       

        }   

    }//j

}

    substrs.clear();

    for (int i=0; i<results.size(); i++) {

        cout<<results[i]<<endl;

    }    




}

int main(int argc, const char * argv[])

{


    // insert code here...

     

    findTheMostSame("232323232323267681561648646484618681656606");

    

    

    return 0;

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值