2 条题解

  • 0
    @ 2024-11-9 12:46:46

    #include<bits/stdc++.h> using namespace std;

    int main() { int T;

    cin>>T;
    
    int Q;
    
    string s;
    
    for(int i=1; i<=T; i++)
    {
    	cin>>s;
    	
    	cin>>Q;
    	
    	string zi;
    	
    	
    	
    	for(int j=1; j<=Q; j++)
    	{
    		cin>>zi;
    		
    		int std[1024]={0}; //子串的标准 
    		
    		for(int k=0; k<zi.size(); k++)
    		{
    			std[(int)zi[k]]++;
    		}
    		
    		int ans=0; //一个Q对应一个ans 
    		
    		for(int k=0; k<s.size()-zi.size()+1; k++)
    		{
    			int jd[1024]={0};
    			
    			string judge=s.substr(k,zi.size());
    

    // cout<<"查找的子串是:"<<judge<<endl; // cout<<"子串的长度是:"<<zi.size()<<endl;

    			for(int h=0; h<zi.size(); h++)
    			{
    				jd[(int)judge[h]]++;
    			}
    			
    			int flag=1;
    			
    			for(int h=0; h<zi.size(); h++)
    			{
    

    // cout<<zi[h]<<':'<<"std:"<<std[(int)zi[h]]<<" VS "<<"jd:"<<jd[(int)zi[h]]<<endl;

    				if(std[(int)zi[h]]!=jd[(int)zi[h]])
    					flag=0;
    

    // cout<<"flag:"<<flag<<endl; }

    			if(flag==1)
    				ans++;
    		} 
    		
    		cout<<ans<<endl;
    		
    	}
    }
    
    return 0;
    

    }

    感觉我写的太丑陋了 抛砖引玉一下吧

    信息

    ID
    196
    时间
    4000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    593
    已通过
    72
    上传者