290 题
来源:4-3 set和map不同底层实现的区别
我是笨笨蛋
2020-03-01
老师,这段代码中这两个for循环的作用是什么。我只知道 第一个for循环中map1[pattern[i]]=words[i];的作用是建立 pattern->str 的关系。
写回答
1回答
-
liuyubobobo
2020-03-02
map1[pattern[i]] = words[i] 是建立 pattern 到 words 的关系,
即 a 对应 dog;b 对应 cat;
map2[words[i]] = pattern[i] 是建立 words 到 pattern 的关系,
即 dog 对应 a;cat 对应 b;
之后的 for 循环就是遍历一遍,确认第 i 个 words 确实是和 pattern 第 i 个字符对应的;
并且 pattern 第 i 个字符也确实是和第 i 个 words 对应的。
如果有一个不对应,就返回 false。
这里有一个有意思的问题,就是为什么要正着检查一遍,再反着检查一遍?
我建议,把这两个检查的其中一个删掉,然后提交给 Leetcode,看结果是否正确?如果不正确,在什么测试用例上出错了?
为了帮你节省时间,我直接把测试用例给你:
如果去掉 map1 的测试,只留 map2 的测试,在下面的测试用例会出错,答案应该是 false,返回了 true:
如果去掉 map2 的测试,只留 map1 的测试,在下面的测试用例会出错,答案应该是 false,返回了 true:
具体调试一下,用单步跟踪的方式再理解一下,为什么只有一个测试,在上述的 case 下会出错?进步就发生在这个过程中哦。
继续加油!:)
112020-03-02
相似问题