1 条题解

  • 0
    @ 2025-10-8 16:54:23
    #include <bits/stdc++.h>
    using namespace std;
    char s[1100], ss[110], a[25][110];
    int b[25], p[1100];
    int ys[256];
    
    bool pd(char c1, char c2)
    {
        if (c1 == c2) return 1;
        if (ys[c1] == ys[c2] && ys[c1] != 0) return 1;
        return 0;
    }
    
    int main()
    {
        memset(ys, 0, sizeof(ys));
        memset(b, 0, sizeof(b));
        for (char c = 'A'; c <= 'Z'; c++) ys[c] = c - 'A' + 1;
        for (char c = 'a'; c <= 'z'; c++) ys[c] = c - 'a' + 1;
        
        scanf("%s", s + 1); int len = strlen(s + 1);
        int n; scanf("%d", &n);
        scanf("%s", ss);
        for (int i = 1; i <= n; i++) scanf("%s", a[i] + 1), b[i] = strlen(a[i] + 1);
        
        memset(p, 0, sizeof(p));
        for (int x = 1; x <= len; x++)
        {
            for (int i = 1; i <= n; i++) if (x + b[i] - 1 <= len)
            {
                bool bk = 1;
                for (int k = 1; k <= b[i]; k++) if (pd(a[i][k], s[x + k - 1]) == 0) bk = 0;
                if (bk == 1) { p[x] = b[i]; x = x + p[x] - 1; break; }
            }
        }
        
        for (int x = 1; x <= len; x++)
        {
            if (p[x] == 0) printf("%c", s[x]);
            else
            {
                printf("%s", ss);
                x = x + p[x] - 1;
            }
        }
        return 0;
    }
    
    • 1

    【字符串基础】字符串替换(加强版)

    信息

    ID
    860
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    91
    已通过
    28
    上传者