list1 -->aaa,bbb,ddd,xyxz,...
list2-->bbb,ccc,ccc,glk,hkp,..
list3> ddd,eee,ffff,lmn,..
aaa-->ccc--> ccc-->eee-->fff-->glk-->hkp-->lmn-->xyxz
在这种情况下,ccc
位于同一个列表中,因此会打印出来,bbb
和ddd
会从列表中删除。
我不是在找代码寻找更好的方法来解决这个问题。搜索了3个小时所以只是想知道这个方法
答案 0 :(得分:2)
获取结果的空列表
获取指向3 排序列表开头的3个指针(或索引)
比较3个指针指向的单词,找到最小的单词并将其添加到结果列表中
移动3个指针中的每一个,直到指向的单词大于最后添加的结果
这样做(3.和4.)直到所有指针都到达列表的末尾
答案 1 :(得分:0)
对于每个列表,制作列表副本并将列表存储在set中以删除同一列表中的重复字符串。
e.g.
list2-->bbb,ccc,ccc,glk,hkp
copy as
set2-->bbb,ccc,glk,hkp,...
(此步骤用于构建以下频率表,如果您有其他方法来构建表,则可以跳过它)
然后使用哈希表创建一个频率表,将字符串s映射到包含s的集合数。 使用该表,您可以检查字符串是否出现在多个列表中。
然后你只需连接输入单词列表,删除出现在多个列表中的那些字符串。