Problem Statement
Let C(Haystack, Needle) be the number of different (possibly overlapping) occurrences of the string Needle in the string Haystack as a contiguous substring.
For example, C("ababababa", "aba") = 4, C("cat", "catastrophy") = 0, and C("canyoudancecancan", "can") = 3.
Given is a string S of lowercase English letters and an
Let Cmax be the largest possible number of times S may occur in a string of length L. In other words, Cmax is the maximum value of C(T, S) taken over all strings T of length L.
Count all strings T made of exactly L lowercase English letters such that C(T, S) = Cmax. Return their count modulo 10^9 + 7.
Definition
- Class:
- MostSubstrings
- Method:
- count
- Parameters:
- String, int
- Returns:
- int
- Method signature:
- int count(String S, int L)
- (be sure your method is public)
Constraints
- S will have between 1 and 100 characters, inclusive.
- Each character of S will be a lowercase English letter.
- L will be between 1 and 1000, inclusive.
Examples
"helloworld"
7
Returns: 31810120
Each of the 26^7 possible strings of length 7 contains 0 occurrences of the string "helloworld", so each of them is optimal. The return value is (26^7 modulo (10^9 + 7)).
"aaaa"
13
Returns: 1
The only optimal string is "aaaaaaaaaaaaa" (13 'a's).
"dogecoin"
17
Returns: 78
The optimal answers are strings of the form "Xdogecoindogecoin", "dogecoinXdogecoin", and "dogecoindogecoinX", where X can be any single letter.
"decode"
11
Returns: 52
Now the optimal solutions are strings of the form "Xdecodecode" and "decodecodeX".
"abadeaba"
8
Returns: 1
"abadeaba"
9
Returns: 52
"abadeaba"
10
Returns: 2028
"abadeaba"
11
Returns: 70304
"abadeaba"
12
Returns: 2284880
"abadeaba"
13
Returns: 1
"abadeaba"
14
Returns: 52
"abadeaba"
15
Returns: 2029
"abadeaba"
16
Returns: 70357
"abadeaba"
17
Returns: 2286986
"abadeaba"
18
Returns: 1
"abadeaba"
19
Returns: 52
"abadeaba"
20
Returns: 2030
"abadeaba"
21
Returns: 70410
"abadeaba"
22
Returns: 2289093
"abadeaba"
23
Returns: 1
"abadeaba"
24
Returns: 52
"abadeaba"
25
Returns: 2031
"abadeaba"
26
Returns: 70463
"abadeaba"
27
Returns: 2291201
"abadeaba"
28
Returns: 1
"abadeaba"
29
Returns: 52
"abadeaba"
30
Returns: 2032
"abadeaba"
31
Returns: 70516
"abadeaba"
32
Returns: 2293310
"abadeaba"
33
Returns: 1
"abadeaba"
34
Returns: 52
"abadeaba"
35
Returns: 2033
"abadeaba"
36
Returns: 70569
"abadeaba"
37
Returns: 2295420
"a"
1000
Returns: 1
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
999
Returns: 1
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
1000
Returns: 3731860
"abacabadabacabaeabacabadabacaba"
309
Returns: 162410418
"abacabadabacabaeabacabadabacaba"
310
Returns: 254480960
"abacabadabacabaeabacabadabacaba"
311
Returns: 443568048
"abacabadabacabaeabacabadabacaba"
175
Returns: 1
"qqqq"
762
Returns: 1
"pqpppqqpqqppqq"
990
Returns: 317987481
"qq"
807
Returns: 1
"pppqp"
685
Returns: 1
"qppqpqpqqqpqqpqqqqpppqqqpqpp"
780
Returns: 2028
"pqqqqpqqqpppqqppqppppqqpqqppqpqpqpppq"
602
Returns: 74112896
"ppppqpppqpppqpq"
622
Returns: 599413597
"qpqqppqqqqqpppqqpqpq"
901
Returns: 583312098
"ppqqpqppqqqppqpqqqppqqqqpppqqqqppqqpqpqqqpqpqqqqqppqppqqqqqpqpp"
716
Returns: 377808718
"qpqqpqq"
815
Returns: 52
"qppppqqppqpqpppqpqqqq"
874
Returns: 899441233
"p"
544
Returns: 1
"ppqqqpqqqpqqpp"
985
Returns: 214984199
"qpqqpqpqpppqqppqpqpqqpqpqpqppppppppppppqqpqqpqpqppppqpqqqqqqqqp"
599
Returns: 567592067
"qpqp"
549
Returns: 52
"pqpqqqp"
977
Returns: 233358520
"pq"
666
Returns: 1
"qp"
524
Returns: 1
"ppqqppqqppqpqqqpqqqqqpqpqqppqpqqpqqqppqqppppqqpqppp"
628
Returns: 281187062
"qqpqqpqqqpppqpppppqqpp"
994
Returns: 822246304
"qppqqpq"
737
Returns: 118562250
"pqqqpqqpqpppp"
787
Returns: 487665222
"pq"
718
Returns: 1
"ppqqqppppppppp"
765
Returns: 704788120
"qqp"
585
Returns: 1
"pppqqqqqqqppqqqqqqqq"
701
Returns: 936
"qpqqpppq"
980
Returns: 860866265
"ppqqppqqqpqqqqppppqpqqpqppppqpppqqpqppqpqqpqpppqqpqqp"
692
Returns: 901376485
"qqqpp"
651
Returns: 3406
"pppqqqpqppqpp"
849
Returns: 1
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"
999
Returns: 995680885
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"
1000
Returns: 1
"ababababababababababababccccccccccccccccccccccccccccccccccccccccccccccccccccabababababababababababab"
859
Returns: 52787161
"decode"
13
Returns: 70382
"ababbbbaaabbbbabbabaaaabaaabaaabaaababbbbaaaaaabababbbaaaaaabbbbabbbbababbbbababababaabbabaaababbbaa"
1000
Returns: 218235411
"abbba"
11
Returns: 2106
"abcda"
1000
Returns: 6773000
"abcdef"
28
Returns: 31988320
"abbbbba"
28
Returns: 82785
"aabaa"
9
Returns: 53
"aaaaaaskjhdfilkjswhdnfkljsndfkjajajsssssssssssssssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
1000
Returns: 829165020
"abca"
8
Returns: 53
"periodperiodperiodperiodperiodperiodperiodperioabwxyzperiodperiodperiodperiodperiodperiodperiodperio"
1000
Returns: 517236919
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
1000
Returns: 1
"abababababababababababababababababababababababababababababababababababababababababababababababababab"
1000
Returns: 1
"aaaaa"
3
Returns: 17576