用于在列表中打印唯一的未重复单词的算法

时间:2017-02-09 04:08:13

标签: algorithm

list1 -->aaa,bbb,ddd,xyxz,... 
list2-->bbb,ccc,ccc,glk,hkp,.. 
list3> ddd,eee,ffff,lmn,..
  1. 在列表中对单词进行排序
  2. 我想删除在列表中重复的单词并打印 按排序顺序
  3. 如果单词在同一列表中重复,则有效。
  4. 在上述情况下应该打印
  5. aaa-->ccc--> ccc-->eee-->fff-->glk-->hkp-->lmn-->xyxz

    在这种情况下,ccc位于同一个列表中,因此会打印出来,bbbddd会从列表中删除。

    我不是在找代码寻找更好的方法来解决这个问题。搜索了3个小时所以只是想知道这个方法

2 个答案:

答案 0 :(得分:2)

  1. 获取结果的空列表

  2. 获取指向3 排序列表开头的3个指针(或索引)

  3. 比较3个指针指向的单词,找到最小的单词并将其添加到结果列表中

  4. 移动3个指针中的每一个,直到指向的单词大于最后添加的结果

  5. 这样做(3.和4.)直到所有指针都到达列表的末尾

答案 1 :(得分:0)

对于每个列表,制作列表副本并将列表存储在set中以删除同一列表中的重复字符串。

e.g. 
list2-->bbb,ccc,ccc,glk,hkp
copy as
set2-->bbb,ccc,glk,hkp,...

(此步骤用于构建以下频率表,如果您有其他方法来构建表,则可以跳过它)

然后使用哈希表创建一个频率表,将字符串s映射到包含s的集合数。 使用该表,您可以检查字符串是否出现在多个列表中。

然后你只需连接输入单词列表,删除出现在多个列表中的那些字符串。