前言
思路
题目大意 :
对于给定的
S
S
S 和
T
T
T 串
询问至少 从 0 − n 遍 历 S 串 多 少 次 , 才 可 以 顺 序 的 写 下 t 串 从0- n遍历S串多少次,才可以顺序的写下t串 从0−n遍历S串多少次,才可以顺序的写下t串
因此我们可以考虑使用 m a p < c h a r , i n t > map<char,int> map<char,int>,存放26个字母对应下标
然后再枚举 t t t串,如果 m p [ t [ i ] ] < = m p [ t [ i − 1 ] ] mp[t[i]] <= mp[t[i-1]] mp[t[i]]<=mp[t[i−1]] 说明还得需要一次遍历才可以获得
当前字母
Mycode
map<char,int> mp;
const int N = 1e5+10;
void solve()
{
string s;cin>>s;
string t;cin>>t;
for(int i= 0;i<s.size();i++){
mp[s[i]] = i ;
}
int cnt = 1 ;
for(int i= 1 ;i<t.size();i++){
if(mp[t[i]] <= mp[t[i-1]] )
++cnt;
}
cout<<cnt<<endl;
}