栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【成长记录】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指向断点的后一位,在此继续计数 
 }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/648572.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号