假设我的字符串数组 A n ,而 A 按字典顺序排序,例如:
0: abcaoeir
1: acda
2: acdttt
3: acdy
4: degaeiour
5: utsss
如果字符串 S 的大小 m ,我怎样才能找到第一个索引 i 和最后一个索引 j A ,以便:
S 是 A [i] 的前缀,没有 k<我将 S 作为 A [k]
S 是 A [j] 的前缀,没有 k>我将 S 作为 A [k]
也就是说, i 是 S 是前缀的第一个索引, j 是最后一个。
例如,给定 A 和 S =" acd" :
0: abcaoeir
1: acda [this will be the i]
2: acdttt
3: acdy [this will be the j]
4: degaeiour
5: utsss
如何在 O(m + lg(n))时间内找到 i 和 j ?
答案 0 :(得分:-1)
在对数组进行排序时,您可以使用std::lower_bound
来查找序列的开头(这是您的lg(n)),然后线性搜索以查找序列的结尾(& #39;是你的m)。