我无法在编码竞赛中找到任何针对以下问题的解决方案。
问题: 我们输入了#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?
答案 0 :(得分:0)
用下划线分隔输入好词的字样,并将它们存储在一个哈希集中。
现在,对于每次审核,最初分配得分0。也可以通过下划线分割单词,并检查单词是否一个接一个地出现在hashset中。如果该单词存在,请将该单词的分数加1。
现在将每个评论视为<review, score>
,并根据评分值按升序对这些评论进行排序。您可以使用任何标准排序O(nlogn)
算法。
您可以使用Trie代替hashset,以便在单词太大的情况下加快算法速度。