我需要编写一个算法来读取键盘流,直到获得正确的密码。
如果密码是ababac, 并且输入是 abababa,这意味着到目前为止它读取 ababa,现在它等待 c 解锁,如果出现 f 而不是 c,那么它会重新启动它的过程。
它很容易在 O(n^2) 中完成,但是我的老师要我们在 O(n) W.C 中完成,它能在这种复杂度下完成吗?!
最佳答案
我觉得网络版Knuth-Morris-Pratt algorithm会做的工作。不过,您必须存储和计算索引数组(在循环数组实现的情况下需要额外的 O(n) 内存)。
关于c - 密码读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9886188/