我在接受采访时遇到了这个问题:
我们必须找出文本文件中两个给定单词的出现次数,它们之间有<=n
个单词。
示例1:
text:`this is first string this is second string`
Keywords:`this, string`
n= 4
output= 2
“此是第一个字符串”是第一个出现次数,此字符串与字符串之间的字数为2(是,第一个)小于4。
此是第二个字符串是剩余的字符串。 * this和string * 之间的单词数是2(是,秒),小于4。
因此答案是2。
我以为我会用
Dictionary<string, List<int>>
。
我的想法是,我使用字典并获取特定单词重复的位置列表,然后遍历两个列表,如果满足条件则递增计数,然后显示计数。
我的思维过程是否正确?请提供任何改进我的解决方案的建议。
谢谢,
答案 0 :(得分:2)
本身不是答案(老实说,我不明白这个问题:P),但是要为其他答案添加一些一般的面试建议:
在采访中,面试官总是在寻找思考过程,并且你是一个批判的,合乎逻辑的思想家。不一定你有良好的编码回忆,可以在你的大脑中编译代码。
此外,采访是一个压力很大的过程。通过在工作中放慢速度和大声说话,你不仅看起来像一个更好的沟通者和逻辑思想家(即使问题出错了),你也给自己时间思考。
使用笔和纸,按照您的想法说话,从顶部开始并完成它。即使我通过证明我至少可以尝试解决问题而不知道技术问题的答案,我也有工作; - )
简而言之,这不仅仅取决于技术实力
答案 1 :(得分:0)
我认为这取决于每个字符串只进行一次或多次调用。如果它像
那样int getOccurences(String str, String reference, int min_size) { ... }
然后你真的不需要字典,甚至不需要字典。您可以遍历字符串以查找单词的出现次数,然后检查它们之间的分隔符数。
如果另一方面问题是任意搜索/索引,恕我直言,你需要一本字典。我会找一个字典,其中键是单词,值是它出现的索引列表。
HTH
答案 2 :(得分:0)
如果你需要对同一文本中不同的单词对重复这样做,那么带有索引列表的单词字典是一个很好的解决方案。但是,如果您只查找一对,那么这两个单词的两个索引列表就足够了。
列表允许您将字检测操作与计数逻辑分开。