【发布时间】:2012-02-25 04:46:46
【问题描述】:
问题:
编写一个程序来删除出现在“所有”字符串中的片段,其中一个片段 是 3 个或更多连续单词。
示例:
输入::
s1 = "下雨了,我想开车回家。";
s2 = "下雨了,我想去滑雪。";
s3 = "天气很热,我想去游泳。";
输出::
s1 = "正在下雨开车回家。";
s2 = "下雨去滑雪吧。";
s3 = "天气很热,去游泳吧。";
移除片段 = "我想"
程序将再次测试大文件。 会考虑效率。
假设:忽略大小写、标点符号。但保留在输出中。
注意:注意
之类的情况a a a a a b c b c b c b c 删除会产生更多碎片。
我的解决方案:(我认为这不是最有效的)
-
将三个单词短语散列到一个 int 中,并将它们存储在一个数组中,用于所有字符串。 减少到像
这样的数字数组1 2 3 4 5
3 5 7 9 8
9 3 1 7 9
问题减少到数组的交集。
对数组进行排序。 (k * nlogn)
保留k个指针。如果找到所有相等的匹配项。否则递增指向最小值的指针。 解决上面的注释。我正在考虑做一个惰性删除,即标记要删除的短语并在末尾删除。
在某些情况下我的解决方案可能不起作用?我们可以优化我的解决方案/找到最佳解决方案吗?
【问题讨论】: