擅长:python、mysql、java
<p>平分比例尺更好。但是运行时不会比较前缀。(Runtime=O(nlog(n))如果您考虑前缀的类似前缀。但作为例子,这是一个更好的解决方案。)</p>
<hr/>
<p>最有效的方法是
只使用前n个字符(n=最大长度前缀)[可选:状态机也可以为您这样做]
把每一个字母都交给一个状态机。你知道吗</p>
<p>状态机需要决定哪些前缀仍然可以得到。你知道吗</p>
<pre><code>E.g. to be tested: "prefix" with your list of prefixes
You start with "" -> everything is possible
You read the "p" -> {pro, pre} are possible prefixes now
You read the "r" -> still the same, both start with "pr"
You read the "e" -> pro is not possible and pre has been found.
</code></pre>
<hr/>
<p>可以从前缀列表生成状态机。但我不想谈这个。你知道吗</p>
<p>但是它会产生一个状态和一个转换表,它取决于当前状态和下一个读取的字符。你知道吗</p>
<pre><code>An example:
Let me add prof to your list of prefixes.
0:
p -> 1
? -> to be added, there are more prefixes
1:
r -> 2
? -> terminate, nothing found
2:
e -> terminate, found pre
o -> 3, found pro
? -> -1
3:
f -> terminate, found pro and prof
? -> terminate, found pro
</code></pre>
<p>如何阅读:
状态:
读取字符->;下一个状态,找到
? =还有别的吗</p>