1 条题解

  • 7
    @ 2024-4-28 16:18:04

    【题目大意】 给定 n 个单词和各自翻译后的单词,再翻译文章。

    【考纲知识点】模拟、数组、字符串

    【解题思路】 用一个字符串 a 来存储最后的字符串,再用一个字符串 b 表示当前这个单词,如果遇到的是字母,那么用 b 加上这个字符,如果是其他的,那么就要遍历所有的 A[i],如果遇到了,就将 a 加上 B[i],如果没有遇到,那么 a 加上UNK就可以了,最后还要加上当前这个字符。 最后判断 b 是否剩余,如果剩余了,那么就要遍历所有的 A[i],如果遇到了,就将a再加上 B[i],如果没有遇到,那么 a 加上UNK

    【参考程序】

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n;
        cin >> n;
        string a[n + 2], b[n + 2];
        for (int i = 1; i <= n; i++)
            cin >> a[i] >> b[i];
        string s, j;
        cin >> s;
        string bb;
        for (int i = 0; i < s.size(); i++)
        {
            if (!(s[i] >= 'a' && s[i] <= 'z'))
            {
                int flag = 0;
                for (int k = 1; k <= n; k++)
                {
                    if (j == a[k])
                    {
                        bb += b[k];
                        flag = 1;
                        break;
                    }
                }
                if (flag == 0 && j.size())
                    bb += "UNK";
                bb += s[i];
                j.clear();
            }
            else
                j += s[i];
        }
        if (j.size())
        {
            int flag = 0;
            for (int k = 1; k <= n; k++)
            {
                if (j == a[k])
                {
                    bb += b[k];
                    flag = 1;
                    break;
                }
            }
            if (flag == 0)
                bb += "UNK";
        }
        cout << bb << endl;
        return 0;
    }
    
    • 1

    [GESP202312 四级] 小杨的字典

    信息

    ID
    571
    时间
    1000ms
    内存
    512MiB
    难度
    8
    标签
    递交数
    516
    已通过
    72
    上传者