假设字符串的排名模式基于对字符从1到k的编号,如果其中有k个不同的字符 (在所使用的字符上提供了一个命令,这里我们假设A< B< C ....等等,但通常它会是可以告诉我们char(X)< or =的东西或>在O | 1 |中的char(Y) 然后我们跟着将数字分配给出现字符的相应索引。
eg-
string - C D B C B,这里B - 1,C - 2,D - 3
rank - 2 3 1 2 1创建相应的排名数组
例如2 -
string - D E G B C D这里B - 1,C - 2,D - 3,E - 4,G - 5
排名 - 3 5 4 1 2 3
(简而言之,我们将最小的字符分配给值1,然后将下一个字符分配给2,依此类推)
现在,问题是:
给出大小为m的字符串S和大小为n的数组P形式的等级模式;找不到。它具有给定排名模式的子串? (m将大于n,以在字符串S中生成多个可能的解决方案)
eg.-
S是A C B A D C A E
P是1 3 2 1 4 S中有两个符合模式P
的子串这里,在子串[0,4]中,即A C B A D
排名1 3 2 1 4
再次在子串[3,7]中,即A D C A E
排名1 3 2 1 4
所以,这里答案是2 ..
我知道一个O | SR | SOLN。和O | S(logR + RlogR)| SOLN。 我们能做得更好吗?如果是这样,有人可以告诉我怎么做?