c - 将部分字符串匹配到字符串数组中的完整字符串

标签 c arrays string matching

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

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

我的输入是:

input list[]={ab,abc,q,z,x}

Output should be[]={abcd,abcd,qwer,-,xyzw}

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

我能想到的工作方法是:-

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

  2. 哈希:它也花费相同的时间。

有更好的方法吗?

最佳答案

如果你的 list[] 是固定的(或者变化不大),一个 trie 就可以解决问题。插入时,您必须执行一些逻辑来识别“第一个匹配”,因此如果“abcd”是第一个,则不应插入“abcde”(或者使其无效,如果“abcd”可以被丢弃,那么您必须做一些会计和簿记)。

详情:http://en.wikipedia.org/wiki/Trie

关于c - 将部分字符串匹配到字符串数组中的完整字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10425615/

相关文章:

Javascript 过滤函数不返回数组

c - 无法用另一个字符串替换字符串中的字符

c - 将字符串拆分为字符串数组

c - 如何将二维数组发送到函数?

c - 在 C 中逐步填充数组的最佳方法是什么?

c - 段错误 11 从结构打印字符串

python - 在 Python 中将字符串转换为 boolean 值

java - 使用 if 输入字符串不起作用

c++ - 如何从 C 中的可执行文件中检索平面二进制文件

c - 为什么我的程序不能打印出 c 中的字符?