练习地址:3358. 放养但没有完全放养 - AcWing题库
思路解析:本题很容易想到,既然求的是至少听到了几遍,那么就应该是当听到的那个字符和自己前面听到的字符在牛文中是逆序关系或者是下标相等的关系,那么就肯定是已经唱到了下一遍.所以如果这两个事件其中一个事件发生就让结果数加一.先使用哈希表存储牛文各个字符的下标顺序,再对听到的部分进行比较.结果更新如上所说
c++实现:
#include<iostream>
#include<unordered_map>
#include<string>
using namespace std;
string ord,l;
unordered_map<char,int>h;
int res=1;
int main()
{
cin>>ord>>l;
for(int i=0;i<ord.length();i++)
{
h[ord[i]]=i;
}
for(int i=0;i<l.length();i++)
{
if(h[l[i]]<=h[l[i-1]])
res++;
}
cout<<res;
}