这是我曾被问过一个问题的一小部分。我有一个可变的字符串数组,如
str list [] = {abcd,xyzw,qwer,abcde}
我的意见是:
输入列表[] = {ab,abc,q,z,x}
输出应为[] = {abcd,abcd,qwer, - ,xyzw}
每个输入字符串应与列表中的相同字符(从头开始)匹配。它应该给出第一个可用的字符串作为答案。
我能想到的工作接近: -
蛮力:时间复杂度O((列表中的字符串数)*(输入字符串的平均长度)*(输入字符串数))
哈希:它也需要相同的时间。
有更好的方法吗?
答案 0 :(得分:1)
如果你的列表[]被修复(或者没有太大变化),trie就可以了。在插入时,你必须做一些逻辑来识别“第一个匹配”,所以如果“abcd”是第一个,你不应该插入“abcde”(或使其无效,如果“abcd”可以被丢弃,那么你必须做一些会计和簿记)。