1 条题解

  • 0
    @ 2025-8-24 21:15:59

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar tder
    喵喵喵。

    搬运于2025-08-24 21:15:58,当前版本为作者最后更新于2024-01-29 10:17:18,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    首先考虑如何分割出每个单词,遍历整个字符串 SS,找出每一个标点符号位置,两个标点符号之间的部分 tt 即为一个单词。特别地,最后一个单词可能没有之后的标点符号,因此在原字符串 SS 末尾加上字符 .\tt.,最后不输出最后一位即可。

    再考虑如何替换,可以用 map 字典将 A 语言与 B 语言的每组对应单词建立索引,可参考 OI Wiki


    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N = 1e4 + 5;
    int n;
    map<string, string> m;
    string s, ans;
    signed main() {
        cin>>n;
        for(int i = 1; i <= n; i++) {
            string a, b;
            cin>>a>>b;
            m[a] = b;
        }
        cin>>s;
        s += '.';
        string t = "";
        for(char c : s) {
            if(c >= 'a' && c <= 'z') t += c;
            else {
                if(t != "") {
                    if(m.count(t)) ans += m[t];
                    else ans += "UNK";
                    t = "";    
                }
                ans += c;
            }
            // cout<<c<<" "<<ans<<" "<<t<<endl;
        }
        ans.pop_back();
        cout<<ans<<endl;
        return 0;
    }
    
    • 1

    信息

    ID
    9627
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者