基于匹配单词和输入字符串对字符串数组进行排序

时间:2018-05-24 10:39:00

标签: algorithm data-structures

我无法在编码竞赛中找到任何针对以下问题的解决方案。

问题:     我们输入了#34;好词"由下划线和用户评论列表分隔(基本上是字符串数组,其中每个数组元素都有一些由下划线分隔的单词)。     我们必须对用户评论列表进行排序,以便具有更多优秀单词的元素排在第一位。

Example:

input:

good words: "pool_clean_food".

user review array:["food_bedroom_environment","view_sea_desert","clean_pool_table"].

output: [2,0,1]

Explanation:

Array[2]="clean_pool_table" having 2 good words i.e. pool and clean
Array[0]="food_bedroom_environment" having 1 good word i.e. food
Array[1]="view_sea_desert" having 0 good word i.e. nil

How can I approach the problem, which data structure shall I use so that my code can handle large inputs?

1 个答案:

答案 0 :(得分:0)

  • 用下划线分隔输入好词的字样,并将它们存储在一个哈希集中。

  • 现在,对于每次审核,最初分配得分0。也可以通过下划线分割单词,并检查单词是否一个接一个地出现在hashset中。如果该单词存在,请将该单词的分数加1。

  • 现在将每个评论视为<review, score>,并根据评分值按升序对这些评论进行排序。您可以使用任何标准排序O(nlogn)算法。

您可以使用Trie代替hashset,以便在单词太大的情况下加快算法速度。