c++ - multimap中的一键多值问题
问题描述
我正在使用地图解决问题。
我使用多图来拥有一个具有多个值的键来解决这个问题。但是,它不起作用。我认为问题在于当我将元素插入多图时,但我找不到该代码有任何问题。指令如下:您将获得两个单词和字符之间的映射。你的任务是编写一个函数来检查第一个单词是否可以翻译成第二个单词。您需要使用字符映射来破译第一个单词并查看它是否与第二个单词匹配。字符映射可以重复应用于每个字符。“works works”是一个匹配,每个字母都映射到它自己
“out the”是匹配的。首先检查 o 和 t。从给定的映射中,您有 o->c、c->t。然后检查 u 和 h。从映射 u->h。最后检查 t 和 e。从映射 t->e。由于可以解析所有字符,因此 out 和 the 是匹配的。
“好虫”不配。首先检查g和w,g不映射到w。在第一次出现字符不映射时,您可以断定它不匹配。我的问题是当 t 映射到两个单词 e、f 时。而且我的代码没有通过它的测试-> 谢谢
int checkmatch(char x, char y, std::multimap<char,char>mapp){
if (x == y) return 1;
while (mapp.find(x) != mapp.end()){
if(mapp.find(x)->second==y)
return 1;
else
x=mapp.find(x)->second;
}
return 0;
}
bool wordsMatch( std::vector<std::pair<char, char>> & mappings, std::string leftWord, std::string rightWord ){
// Your code goes here
std::multimap<char,char> mapp;
std::vector<char>value;
int n=mappings.size();
int result=0;
char p1[leftWord.length()], p2[rightWord.length()];
for(int i=0; i<n; i++){
mapp.insert(std::pair<char,char>(mappings[i].first, mappings[i].second));
}
if (leftWord.length() != rightWord.length()){
return false;}
for(int i=0; i<leftWord.length();i++){
p1[i]=leftWord[i];
p2[i]=rightWord[i];}
for(int i=0; i<leftWord.length();i++){
result +=checkmatch(p1[i],p2[i], mapp);
}
if (result == leftWord.length())
return true;
else
return false;
}
解决方案
推荐阅读
- python - 3D nrrd 图像可视化(matplotlib)?
- aws-lambda - 在 AWS Lamba 上创建实体类
- c# - 不同函数的不同数组值
- c# - Windows 生物识别框架:AcquireFocus() 无法正常工作。错误访问被拒绝:0x80070005
- python - GstBus 没有收到 EOS 事件
- node.js - 为什么heroku在部署时找不到我的节点模块?
- android - 共享元素活动转换具有奇怪的性能
- python - 循环通过genfromtxt对象获取子字符串并放入sqlite数据库
- r - 如何使用 data.table 和 lubridate 更快地按组计算(日期)排名?
- uproot - 我可以看一个切割数据以准备在根中进行直方图绘制的简短示例吗?