A25166. wolf
填空题
容易
知识点
题目描述
wolf
题目描述:给定一个仅包含小写字母的字符串 S,需按以下规则从中挑选字符组成 "wolf":
(1)每次挑选 4 个字符,且字符相对顺序保持不变;
(2)这 4 个字符从左到右恰好组成字符串 "wolf";
(3)字符串 S 中的每个字符最多被挑选一次。
请计算字符串 S 中最多能挑选出多少组 "wolf"。
例 1:S = "wolwfolf";通过下图的挑选方式,最多能挑出 2 组 "wolf";

例 2:S = "awboclffowolwof";通过下图的挑选方式,最多能挑出 2 组 "wolf"。

输入描述:
输入一个仅包含小写字母的字符串 S(4≤S 的长度≤1000)。
输出描述:
输出一个整数,表示最多能挑选出 "wolf" 的组数。
样例输入:
wolwfolf样例输出:
2参考答案
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string s, s1 = "wolf";
cin >> s;
int len = s.length(), cnt = 0;
int pos = 0;
while(true) {
int p = s.find('w', pos);//找到w的位置
if(p==-1)
break;
pos = p + 1; //更新下次搜索位置
int cur = 1; //匹配字符数量
for(int j=p; j<len; j++) { //往后寻找wolf字符
if(s[j] == s1[cur]) {
cur++;
}
if(cur == 4) {
cnt++;
break;
}
}
}
cout << cnt;
return 0;
}
上一题
下一题