描述
給定一個字串,在字串中找到第一個連續出現至少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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/4979.html
標籤:C++
上一篇:C++語言基礎--0_前言
