ACWing3358. 放养但没有完全放养

题目:

一个鲜为人知的事实是,奶牛拥有自己的文字:「牛文」。

牛文由 26个字母 a 到 z 组成,但是当奶牛说牛文时,可能与我们所熟悉的 abcdefghijklmnopqrstuvwxyz 不同,她会按某种特定的顺序排列字母。

为了打发时间,奶牛 Bessie 在反复哼唱牛文字母歌,而 Farmer John 好奇她唱了多少遍。

给定一个小写字母组成的字符串,为 Farmer John 听到 Bessie 唱的字母,计算 Bessie 至少唱了几遍完整的牛文字母歌,使得 Farmer John 能够听到给定的字符串。

Farmer John 并不始终注意 Bessie 所唱的内容,所以他可能会漏听 Bessie 唱过的一些字母。

给定的字符串仅包含他记得他所听到的字母。

输入格式

输入的第一行包含 26个小写字母,为az的牛文字母表顺序。

下一行包含一个小写字母组成的字符串,为 Farmer John 听到 Bessie 唱的字母。

输出格式

输出 Bessie 所唱的完整的牛文字母歌的最小次数。

数据范围

字符串的长度不小于 1 且不大于 1000。

输入样例:

abcdefghijklmnopqrstuvwxyz
mood

输出样例:

3

样例解释

在这个样例中,牛文字母表与日常的字母表的排列一致。

Bessie 至少唱了三遍牛文字母歌。

 有可能 Bessie 只唱了三遍牛文字母歌,而 Farmer John 听到了以下被标记为大写的字母。

abcdefghijklMnOpqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcDefghijklmnopqrstuvwxyz

假设牛文的字符串为s1,听到的字符串为s2;

这个题目其实就是把s2分成很多个小部分,这些小部分的顺序都必须按照s1的顺序,求最少有多少个这种小部分。

很容易就想到用for循环去遍历s1,同时与s2去进行比较,每一个for循环都可找出一个这种小部分(这里建议手动模拟一下更好理解),找出一个小部分总数就加一;

while (r != s2.size())
	{
		for (int i = 0; i < 26; i++)
		{
			if (s1[i] == s2[r])
				r++;
		}
		cnt++;
	}

全部代码:

#include<iostream>
using namespace std;
string s1, s2;
int main()
{
	int cnt = 0;
	int r=0;
	cin >> s1 >> s2;
	while (r != s2.size())
	{
		for (int i = 0; i < 26; i++)
		{
			if (s1[i] == s2[r])
				r++;
		}
		cnt++;
	}
	cout << cnt << endl;
	system("pause");
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值