11:连续出现的字符

总时间限制: 1000ms 内存限制: 65536kB
描述
给定一个字符串,在字符串中找到第一个连续出现至少k次的字符。

输入
第一行包含一个正整数k,表示至少需要连续出现的次数。1 <= k <= 1000。
第二行包含需要查找的字符串。字符串长度在1到1000之间,且不包含任何空白符。
输出
若存在连续出现至少k次的字符,输出该字符;否则输出No。
样例输入
3
abcccaaab
样例输出
c

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	int k;
	cin>>k;
	//直接用string表示,题中说字符串中没有空格 
	string str;
	cin>>str;
	
	int num[200];
	memset(num,0,sizeof(num));
	//num[i]连续字符出现的次数 ,该字符ASCII减去空格ASCII的值为i 
	//为了循环结构便于比较,首先计算字符串的第一个字符
	num[str[0]-' ']=1;
	for(int i=1;i<str.size();i++){
	//该位置字符与上一个字符相同,字符连续个数对应的num自增
	//该位置字符与上一个字符不同,字符连续个数对应的num为1
		if(str[i]==str[i-1])
		num[str[i]-' ']++;
		else
		num[str[i]-' ']=1;

	//如果某个字符的连续数量等于k,就直接输出
		if(num[str[i]-' ']==k){
			cout<<str[i];
			return 0;
		}
	}
	//没有出现k次的字符,输出"No" 
	cout<<"No";
	
	return 0;
} 
发布了36 篇原创文章 · 获赞 0 · 访问量 340

猜你喜欢

转载自blog.csdn.net/weixin_44437496/article/details/104044996