[编程题]剪花布条

剪花布条

链接:https://www.nowcoder.com/questionTerminal/1046cd038f7a4b04b2b77b415973de1c
来源:牛客网

题目描述:
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?

输入描述:
输入包含多组数据。
每组数据包含两个字符串s,t,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。

输出描述:
对应每组输入,输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就输出0,每个结果占一行。

示例:
输入
abcde a3
aaaaaa aa

输出
0
3

题目分析:

  • 可以用string库的find函数找,找到后跳过一个子串的长度。
  • 也可以使用string库的substr函数截取与子串相同的长度来比较,找到后跳过一个子串的长度。

代码示例:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s,t;
    while(cin>>s>>t)
    {
        int res=0;
        size_t pos=0;
        while((pos=s.find(t,pos))!=string::npos)
        {
            pos+=t.size();
            ++res;
        }
        cout<<res<<endl;
    }
    return 0;
}
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s1,s2;
    while(cin>>s1>>s2)
    {
        int n=0;
        int p=0;
        while(p+s2.size()<=s1.size())
        {
            if(s1.substr(p,s2.size())==s2)
            {
                ++n;
                p+=s2.size();
            }
            else
            {
                ++p;
            }
        }
        cout<<n<<endl;
    }
    return 0;
}
发布了86 篇原创文章 · 获赞 188 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43239560/article/details/104728141