1、求一串字符串中连续出现次数最多的字串
#include<iostream> #include<string> #include<vector> using namespace std; pair<int,string> fun(const string &str) { vector<string> substrs; int maxcount=1,count=1; string substr; int i,len=str.length(); for(i=0;i<len;++i) substrs.push_back(str.substr(i,len-i)); //str="abcbcbcabc",那么substrs如下所示 /* a b c b c b c a b c substrs[0] b c b c b c a b c substrs[1] c b c b c a b c substrs[2] b c b c a b c substrs[3] c b c a b c substrs[4] b c a b c substrs[5] c a b c substrs[6] a b c substrs[7] b c substrs[8] c substrs[9] */ for(i=0;i<len;i++)//扫描substrs的十个元素,每次扫描一个,总共10次 { for(int j=i+1;j<len;++j)//针对substrs的某个元素,扫描步长从1到len-1 { count=1; if(substrs[i].substr(0,j-i)==substrs[j].substr(0,j-i))//比较字符串substrs[i]的前j-i个字符和从substrs[j]的前j-i个字符是否相同。开始的字符是否相同, 如abcabcbc(i=0,j=3时) . { ++count; for(int k=j+(j-i);k<len;k+=j-i) { if(substrs[i].substr(0,j-i)==substrs[k].substr(0,j-i)) ++count; else break; } if(count>maxcount) { maxcount=count; substr=substrs[i].substr(0,j-i); } } } } return make_pair(maxcount,substr); } int main() { string str; pair<int,string> rs; while(cin>>str) { rs=fun(str); cout<<rs.second<<‘:‘<<rs.first<<‘\n‘; } return 0; }
2、从今天开始晚上不吃东西了。确定,一定,以及肯定,锻炼身体
原文地址:http://www.cnblogs.com/yexuannan/p/3773676.html