1 条题解
-
7
【题目大意】 给定 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
信息
- ID
- 571
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 8
- 标签
- 递交数
- 516
- 已通过
- 72
- 上传者