连续出现的字符

0
13

描述

给定一个字符串,在字符串中找到第一个连续出现至少k次的字符。

输入

第一行包含一个正整数k,表示至少需要连续出现的次数。1 <= k <= 1000。
第二行包含需要查找的字符串。字符串长度在1到1000之间,且不包含任何空白符。

输出

若存在连续出现至少k次的字符,输出该字符;否则输出No。

样例输入

3
abcccaaab

样例输出

c

为了学习正则表达式,我这里主要是用正则表达式做的,匹配第一个至少出现k次的字符串,存在则输出匹配字符串第一个字符,否则输出No,于是我给出这样的正则表达式:(\w)(\1){k-1,},在C++里面需要加上转意符得到下面代码中的正则表达式,注意由于k是用户输入的,所以才出现代码中用一个字符串保存不完整正则信息,后面k输入完整后补全。更多关于正则表达式可以访问:编程胶囊:正则表达式入门,里面还有正则表达式进阶及教程

完整代码

#include <iostream>
#include <regex>

using namespace std;

int main(int argc, char const *argv[])
{
    string str, k_, reg_str="(\\w)(\\1){";
    //reg_str包含匹配的正则表达式信息
    regex reg;
    smatch math_str; 
    int k;
    cin >> k >> str; k--;
    k_ = to_string(k);
    k_ += ",}";
    reg_str  += k_;
    reg.assign(reg_str);
    if(regex_search(str, math_str, reg)) cout << ((string)math_str[0])[0];
    else cout << "No\n";
    system("pause");
    return 0;
}

<

发布回复

请输入评论!
请输入你的名字