总时间限制: 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;
}