题目:
翻译问题
小杨是一名翻译员负责将A语言翻译成B语言
为此他特意编了一本词典,其中包含A语言的单词和对应的B语言
为了更好的工作,他请我们编译一个程序来帮助他翻译:
先输入一行表示小样字典里有多少个单词(n)
在输入n行,每行包含一个A语言单词和对应的B语言翻译
中间用空格分开如
abc q
这句话表示A语言的abc单词翻译成B语言单词是q
数如完n行后在输入一段话为要翻译成B语言的A语言,每个单词间至少要有1个符号分开如
asdsd\\sSSwe__+opswe.sdQaq^sd$ssd#@qw""as
规定这段话只包含字符和大小写字母
如果在句子中出现了词典中没有的单词请用UNK代替
此题目不一定准确,(记忆中的)
看下chatgpt题解
#include <iostream>
#include <unordered_map>
#include <sstream>
#include <vector>
int main() {
//输入词典中单词的数量
int n;
std: :cin >> n;
// 创建词典
std: :unordered_map<std :: string, std: :string> dictionary;
std :: string aWord, bWord;
for (int i = 0; i < n; ++i) {
std: :cin >> aWord >> bWord;
dictionary[aWord] = bWord;
}
//输入待翻译的句子
std :: string sentence;
std :: cin.ignore(); // 清除缓冲区
std: :getline(std :: cin, sentence);
// 将句子分割成单词
std: : istringstream iss(sentence);
std: : vector<std: :string> words;,
std: :string word;
while (iss >> word) {
words. push_back (word) ;
}
//进行翻译并输出结果
for (const auto &w : words) {
auto it = dictionary. find(w);
if (it != dictionary. end()) {
std: :cout << it->second << " ";
} else {
std :: cout << "UNK ";
}
(最后加个大括号)
PY代码
n = int(input()) # 输入词典中单词的数量
dictionary = {} # 创建一个空字典用于存储翻译对应关系
# 输入词典中的单词和对应的翻译
for _ in range(n):
word, translation = input().split()
dictionary[word] = translation
sentence = input() # 输入要翻译的句子
translated_sentence = [] # 创建一个空列表用于存储翻译后的单词
# 遍历句子中的每个单词
for word in sentence.split():
if word in dictionary:
translated_sentence.append(dictionary[word])
else:
translated_sentence.append("UNK")
# 输出翻译后的句子
translated_sentence = " ".join(translated_sentence)
print(translated_sentence)