1. 题目来源
链接:剪花布条
来源:牛客网
2. 题目说明
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?
输入描述:
输入包含多组数据。
每组数据包含两个字符串s,t,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。
输出描述:
对应每组输入,输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就输出0,每个结果占一行。
示例:
输入
abcde a3
aaaaaa aa
输出
0
3
3. 题目解析
题目简单描述即:在S串中寻找T串整体出现的次数。在C语言中可以用strstr函数进行查找,C++可以用标准模板库string中find函数进行查找,找到以后跳过一个T串的长度,若只跳过一个字符,在特殊情况下会重复计算,最常见的特殊情况就是重复字符aaaaa了。
4. 代码展示
// write your code here cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
string str1, str2;
while (cin >> str1 >> str2) {
int count = 0, pos = 0;
// 在str1中寻找str2,直至寻找不到
while ((pos = str1.find(str2, pos)) != -1) {
pos += str2.size(); // 跳过str2串整体长度
++count; // 计数
}
cout << count << endl;
}
return 0;
}