您的位置:首页 > 其它

求一个字符串中连续出现次数最多的子串

2015-09-03 17:27 387 查看
求一个字符串连续出现次数最多的子串

//求一个字符串中连续出现次数最多的字符串
pair<int,string> calcuate(const string& str)
{
	int len = str.length();
	vector<string>substrs;
	int count = 1;
	int max = 1;//记录最大出现的次数
	string str1;
	int i , j;
	for( i = 0;i < len;i++)
	{
		substrs.push_back(str.substr(i,len - i));//
	}
	for( i = 0;i < len;i++)
	{
		for( j = i + 1;j < len;j++)
		{
			count = 1;
			if(substrs[i].substr(0,j-i)==substrs[j].substr(0,j-i))//判断是否第二次出现某类型子串 j - i 表示子串的长度
			{
				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 > max)
				{
					max = count;
					str1 = substrs[i].substr(0,j-i);

				}

			}

		}

	}
	return make_pair(max,str1);

}

int main()
{
	pair<int, string> rs;
	string str="ababababac";
	rs = calcuate(str);
	cout << rs.second<<':'<<rs.first<<'\n';
	return 0;
} <strong>
</strong>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: