【成长记录】C++题目——至少k次重复字符的最长字串

【成长记录】C++题目——至少k次重复字符的最长字串,第1张

【成长记录】C++题目——至少k次重复字符的最长字串

【题目】如上

【思路】可以设计一个新的int型数组,数组长度为26,与26个字母位置从0-25一一对应,输入哪个字母就在对应位置加1。最后在判断时,用指针访问的形式按顺序遍历字符串,根据该字母对应int型数组中的出现次数判断是否至少为k,形成子串。利用递归进行循环。

【代码】

#include
 using namespace std;
 void counting(char *,int *,int &,int &);
 int main()
 {
 	int k=0;
 	while(cin>>k)
	{
		char ch[256];
		int count[26]={0};//重点:将26个字母在数组中一一对应地计数 
		int max=0;
		cin>>ch;
		for(int i=0;ch[i]!='';i++)
		{
			count[ch[i]-'a']++;//ch[i]-'a'是整型数,对应数组中的位置 
		}
		counting(ch,count,k,max);
		cout<=k) count++;//利用i遍历ch数组,如果该字符不超过k就退出循环,子串在此处断裂 
 		else break;
	 }
	 if(count>=max) max=count;
	 if(*(ch+i)=='') return;//如果读到了字符数组最后(系统自动加结束符)则返回 
	 else counting(ch+i+1,p,k,max);//进入递归,ch指向断点的后一位,在此继续计数 
 }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5650767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存