1 条题解

  • 0
    @ 2024-12-24 9:59:18

    C :

    #include<stdio.h>
    #include<string.h>
    int cmpch(char a,char b)
    {
    	if('0'<=a&&a<='9'&&a==b)
    		return 1;
    	if('a'<=a&&a<='z'&&(a==b||a-32==b))
    		return 1;
    	if('A'<=a&&a<='Z'&&(a==b||a+32==b))
    		return 1;
    	return 0;
    }
    int main()
    {
    	int i,j,k,n,len1,len2,mark;
    	char str[100][100];
    	char arr[100];
    	while(scanf("%d",&n)!=EOF)
    	{
    		for(i=0;i<n;i++)
    			scanf("%s",str[i]);
    		scanf("%s",arr);
    		len2=strlen(arr);
    		for(i=0;i<n;i++)
    		{
    			len1=strlen(str[i]);
    			for(j=0,k=0;j<len1,k<len2;j++,k++)
    			{
    				if(cmpch(str[i][j],arr[k]))
    					continue;
    				else
    				{
    					if(arr[k]!='[')
    						break;
    					else
    					{
    						mark=0;
    						k++;
    						while(arr[k]!=']')
    						{
    							if(cmpch(str[i][j],arr[k]))
    								mark=1;
    							k++;
    						}
    						if(mark==0)
    							break;
    					}
    				}
    			}
    			if(j==len1&&k==len2)
    				printf("%d %s\n",i+1,str[i]);
    		}
    	}
    	return 0;
    }
    
    

    C++ :

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
    using namespace std;
    
    bool is_equal(char a, char b)
    {
            if(a == b)
                    return true;
            else if(a < b && a >= 'A' && a <= 'Z' && b - a == 'a' - 'A')
                    return true;
            else if(b < a && b >= 'A' && b <= 'Z' && a - b == 'a' - 'A')
                    return true;
            else
                    return false;
    }
    
    int main()
    {
                  int num, i, j;
            string s, pattern;
            vector<string> vec;
            while(cin >> num){
                    vec.clear();
                    while(num--){
                            cin >> s;
                            vec.push_back(s);
                    }
                    cin >> pattern;
                    for(int k = 0; k < vec.size(); k++){
                            s = vec[k];
                            bool match = true;
                            for(i = 0, j = 0; i < s.length(); i++, j++){
                                    if(pattern[j] == '['){
                                            bool m = false;
                                            char c = pattern[++j];
                                            while(c != ']'){
                                                    if(is_equal(s[i], c)){
                                                            m = true;
                                                    }
                                                    c = pattern[++j];
                                            }
                                            if(!m){
                                                    match = false;
                                                    break;
                                            }
                                    }
                                    else{
                                            if(!is_equal(s[i], pattern[j])){
                                                    match = false;
                                                    break;
                                            }
                                    }
                            }
                            if(match && j >= pattern.length()){
                                    cout << k + 1 << " " << s << endl;
                            }
                    }
            }
            return 0;
            
    } 
    
    

    Java :

    import java.util.Scanner;
    
    
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            while (in.hasNext()) {
                int n = in.nextInt();
                String[] s = new String[n];
                for (int i = 0; i < n; i++) {
                    s[i] = in.next();
                }
    
                String re = in.next();
                for (int i = 0; i < n; i++) {
                    if (s[i].toLowerCase().matches(re.toLowerCase())) {
                        System.out.println(i + 1 + " " + s[i]);
                    }
                }
            }
        }
    }
    
    
    • 1

    信息

    ID
    1394
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者