将连续的'L'对(即"LL")的数量做前缀和,'V'的数量做后缀和,遍历字符串,遇到'O'的时候,将'O'前面的"LL"和后面的'V'排列组合即为答案
def solution(n, s):
MOD = 10**9 + 7
小 L 截获了一段长度为 n 的通讯序列,序列由大写英文字母构成。他需要从中统计一种特殊信号模式出现的次数。
该信号模式被定义为子序列 “LLOV”:即先在序列中找到一个字符 'L',紧随其后紧挨着另一个 'L'(两个 'L' 必须连续),之后再依次找到一个 'O' 和一个 'V',这四个字符在原始序列中的下标必须保持严格递增的顺序。
形式化地说,我们需要统计四元组 (i,i+1,j,k) 的数量,要求 i+1<j<k,且序列第 i 和第 i+1 个字符均为 'L',第 j 个字符为 'O',第 k 个字符为 'V'。
序列的长度 n 不超过 106,序列中的字符均为大写英文字母。由于满足条件的子序列数量可能非常大,你需要输出该数量对 109+7 取模的结果。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.