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
O(nlogn)
算法
您可以使用Trie代替hashset,如果单词太大,它将加快算法的速度 这是哪场比赛?比赛正在进行吗?在比赛中寻求帮助被认为是作弊行为。比赛已经结束。是在InterviewBit.comBut上,在循环中逐字拆分和迭代每个评论需要O(n*n)?没有更有效的解决方案吗?它的
O(n*m)
其中n
是评论的数量,m
是每个单词的长度。好吧,没有比这更快的方法了,因为至少你必须扫描每一篇评论的每一个单词。