匹配部分字符串以完成字符串数组中的字符串

时间:2012-05-03 05:29:37

标签: c arrays string matching

这是我曾被问过一个问题的一小部分。我有一个可变的字符串数组,如

  

str list [] = {abcd,xyzw,qwer,abcde}

我的意见是:

  

输入列表[] = {ab,abc,q,z,x}

     

输出应为[] = {abcd,abcd,qwer, - ,xyzw}

每个输入字符串应与列表中的相同字符(从头开始)匹配。它应该给出第一个可用的字符串作为答案。

我能想到的工作接近: -

  1. 蛮力:时间复杂度O((列表中的字符串数)*(输入字符串的平均长度)*(输入字符串数))

  2. 哈希:它也需要相同的时间。

  3. 有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如果你的列表[]被修复(或者没有太大变化),trie就可以了。在插入时,你必须做一些逻辑来识别“第一个匹配”,所以如果“abcd”是第一个,你不应该插入“abcde”(或使其无效,如果“abcd”可以被丢弃,那么你必须做一些会计和簿记)。

详细信息:http://en.wikipedia.org/wiki/Trie