Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 根据与输入字符串匹配的单词对字符串数组排序_Algorithm_Data Structures - Fatal编程技术网

Algorithm 根据与输入字符串匹配的单词对字符串数组排序

Algorithm 根据与输入字符串匹配的单词对字符串数组排序,algorithm,data-structures,Algorithm,Data Structures,在一次编码竞赛中,我没能找到以下问题的任何解决方案 问题: 我们有用下划线分隔的“好词”输入字符串和用户评论列表(基本上是字符串数组,其中每个数组元素都有一些用下划线分隔的词)。 我们必须对用户评论列表进行排序,以使具有更多好话的元素排在第一位 Example: input: good words: "pool_clean_food". user review array:["food_bedroom_environment","view_sea_desert","clean_pool_t

在一次编码竞赛中,我没能找到以下问题的任何解决方案

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

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。用下划线分割单词,并逐个检查单词是否存在于哈希集中。如果单词出现,则在该单词的分数上加1

  • >P>现在将每个评论视为<代码> /代码>对,并根据它们的得分值按升序排序这些评论。您可以为此使用任何标准排序
    O(nlogn)
    算法


您可以使用Trie代替hashset,如果单词太大,它将加快算法的速度

这是哪场比赛?比赛正在进行吗?在比赛中寻求帮助被认为是作弊行为。比赛已经结束。是在InterviewBit.comBut上,在循环中逐字拆分和迭代每个评论需要O(n*n)?没有更有效的解决方案吗?它的
O(n*m)
其中
n
是评论的数量,
m
是每个单词的长度。好吧,没有比这更快的方法了,因为至少你必须扫描每一篇评论的每一个单词。