- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚刚在一本概念性的书中读到:
isString(sring s1, string s2)
可以假定为 O(A+B),其中 A 是 s1 的大小,B 是 S2 的大小。
谁能告诉我这个假设是从哪里来的?
我的逻辑:如果我们假设 A > B,那么可以进行 A-B 窗口搜索。假设我们一找到它就退出。假设最坏的情况是序列中的最后一个字符每次都是假的。 (不确定这样的序列是否存在)因此,我们在对单个窗口进行 B-1 比较后退出。综上所述,我们的总操作数应该是 A-B*B-1。这是正确的逻辑还是我累了应该去 sleep )))))请告诉我。
最佳答案
对于固定字符集,Ukkonen's algorithm可以计算出Suffix Tree s1
的时间 O(A)
。验证 s2
是否是一个子字符串就是验证它是否是一个有效的后缀。该遍历需要时间 O(B)
。从而导致 O(A + B)
时间。
正如您所描述的,朴素算法要慢得多。
关于algorithm - isSubstring(s1, s2) 复杂性(与语言无关的方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52885914/
我刚刚在一本概念性的书中读到: isString(sring s1, string s2) 可以假定为 O(A+B),其中 A 是 s1 的大小,B 是 S2 的大小。 谁能告诉我这个假设是从哪里来的
if (isSubstring(str1, str2)) System.out.println(str1 + " is a substring of " + str2 + ".") 这是 isSubs
假设您有一个方法 isSubstring,它检查一个词是否是另一个词的子串。给定两个字符串,s1 和 s2,编写代码来检查 s2 是否是 s1 的旋转,只使用一次调用 isSubstring (例如,
我是一名优秀的程序员,十分优秀!