月月查华华手机

月月查华华的手机

https://ac.nowcoder.com/acm/problem/23053

开vector数组,记录每个字母的下标 查找时用二分查找

#include<bits/stdc++.h>
using namespace std;
vector<int>id[26];
int cnt[26];
char s[1000005];
int main(){
    cin>>s;
    int ls=strlen(s);
    for(int i=0;i<ls;i++){
        int t=s[i]-'a';
        id[t].push_back(i);
        cnt[t]++;
    }
    int n;cin>>n;
    for(int i=1;i<=n;i++){
        char t[1000005];cin>>t;
        int lt=strlen(t),p=-1,jg=0,ans;
        for(int j=0;j<lt;j++){
            int ch=t[j]-'a',l=0,r=cnt[ch]-1;
            jg=0;
            while(l<=r){
                int mid=(l+r)>>1;
                if(id[ch][mid]>p)jg=1,ans=id[ch][mid],r=mid-1;
                else l=mid+1;
            }
            if(jg==0)break;
            p=ans;
        }
        if(jg==1)cout<<"Yes\n";
        else cout<<"No\n";
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
10-05 10:13
已编辑
HHHHaos:让这些老登来现在秋招一下,简历都过不去
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务