Problem Statement
There is a string written on a sheet of paper. Katka has an eraser. She would like to erase some (possibly none or all) of the characters in such a way that the remaining letters will form a palindrome. Count the number of ways in which she can do it.
There is a catch: Katka's string is very long.
You are given the
Compute and return the number of ways in which Katka can produce a palindrome, modulo 10^9 + 7.
Definition
- Class:
- LongPalindromes
- Method:
- count
- Parameters:
- int, String
- Returns:
- int
- Method signature:
- int count(int repeats, String pattern)
- (be sure your method is public)
Notes
- A palindrome is a string that reads the same forwards and backwards. In particular, the empty string is also a palindrome.
Constraints
- pattern will have between 1 and 50 characters, inclusive.
- Each character in pattern will be a lowercase English letter ('a'-'z').
- repeats will be between 1 and 10^9, inclusive.
Examples
1
"blob"
Returns: 8
The eight valid ways of erasing are the following ones (with periods representing erased letters): .... b... .l.. ..o. ...b b..b bl.b b.ob
1
"various"
Returns: 8
All the letters are distinct, so Katka must erase all except for at most one.
30
"aa"
Returns: 536396504
Katka's string consists of 60 occurrences of the letter 'a'. Each of the 2^60 possible ways of erasing some of them produces a palindrome.
3
"abac"
Returns: 343
987654321
"qwrtyuqertyuiqeqwertyuqwertzuiqrtyuiopopioqwertyui"
Returns: 14709905
1
"ff"
Returns: 4
945353537
"jbizwnzwoazijeii"
Returns: 112217208
354557574
"pqmfmrhjtjtdmtrdtdhddttdmfjtfbhrjtjtqrhd"
Returns: 813189368
802433620
"tcbfpjvkymkfh"
Returns: 440808142
665850735
"ruapoauuuheaudporfhwlb"
Returns: 185726497
62328244
"ovgzatl"
Returns: 683246559
1
"f"
Returns: 2
417526521
"fibaxroulzlkayqcsfgrdqgucccppcfqdrpnauvnyyogmmc"
Returns: 963983977
453793780
"jzsrtstok"
Returns: 249311758
851818544
"cccpp"
Returns: 128942750
119513920
"pdjkrcjc"
Returns: 359193575
632112929
"dmycvytxwkkludvwcmrccrzyvv"
Returns: 612583387
572832781
"nrqcqeggtmezmqsmyriddxwnjocytmeaujyxnzqdnpktn"
Returns: 390036027
391251681
"kzrxrrqshsarabrlxskklmbamaqzkllqrrkqaaxrb"
Returns: 667816873
3
"ff"
Returns: 64
988878483
"twqlxmwxogfqoumrlbdufmxesykxhhmrxftwgmrfiyoldwtkkf"
Returns: 931159475
795951975
"gyzfmfduuyfdffk"
Returns: 550603149
1
"fgsdrewgregregegdsgbxcew"
Returns: 1930
399695763
"hzssfhrsrzssrfrhzzfhfszzshzrfhzhfr"
Returns: 534547506
68148874
"brx"
Returns: 984744787
216363667
"cbccssbbc"
Returns: 200494369
454128578
"mmyyymmyymyyyymyyymyymymmmmmmm"
Returns: 578211335
720412492
"ow"
Returns: 561860473
330453699
"ocoaytyiexhxkxoh"
Returns: 795057895
212982249
"gkhbwqk"
Returns: 642189750
962856227
"ytyytttyyttyyttyyytyyyyttttytyytyt"
Returns: 602332479
2
"fgsdrewgregregegdsgbxcew"
Returns: 4625198
3
"fg"
Returns: 27
820193936
"edkckepkpmpzmpczd"
Returns: 863189638
822699848
"omcjqsmicyxjkbezjnxrd"
Returns: 769107301
396477637
"zseqese"
Returns: 532749275
749538922
"diqvvjvqmhqqvfddvhqivmqphiddhdmfqqpjjfhhjqidvdmi"
Returns: 462973542
2
"f"
Returns: 4
293970757
"aflauifwagwtsikkstlutjksbsfistluugflfbsiilwtwvlkk"
Returns: 179427127
818624438
"jyxxrrwqwjnrypnrjnwa"
Returns: 632502862
207912919
"cy"
Returns: 734791817
980750914
"tppztj"
Returns: 462094776
213253713
"ywwwwywwywyywywykkykwykywkkyywkykwyywwywwkk"
Returns: 94330129
84539947
"hileexfwmlpfifwpbxfxocxiywmwbfpefgce"
Returns: 240550293
214271585
"onoocaelnmecpansceqqlsemqosnmleae"
Returns: 390424993
29553324
"yrvu"
Returns: 712707508
404231801
"vdzzjjhsfvzhprfvvjzzcfaaesvsfjj"
Returns: 266283783
2
"ff"
Returns: 16
631512670
"asdtadtjyystdiisdjjjdijsaiiisisjjis"
Returns: 523968550
267563096
"pdaaaeodokkasedoksd"
Returns: 679257679
492634661
"xepoxiliolooiixpmieoixpxnnbjxofjxfoloebioofjobpiig"
Returns: 846800243
925313470
"exqtikwgihgcr"
Returns: 655510298
993976205
"hiqjpbbgjphabvwhyqqrpyiijhvwajsasisqisbpwaoabso"
Returns: 500860376
40580460
"iivndiptvflmncvctmufmupi"
Returns: 584380873
1
"fg"
Returns: 3
234624604
"hdgdrobckwkghcogmucquroiowrhyk"
Returns: 26880911
702957191
"nkxcnjlvwcg"
Returns: 248286495
813523108
"zopbpebolcanhkekromws"
Returns: 274646486
732818038
"yqyeyqqiieyqeixxiq"
Returns: 288844328
931068192
"bvbbpfsutkw"
Returns: 381803866
215981481
"iii"
Returns: 96579415
68780603
"ddded"
Returns: 255958865
661605766
"nijzinztnftf"
Returns: 391884689
885307932
"jbbjbbjbbjbbbbjbbjjbjjjbjbbbjbjjjjbbjbbbbjj"
Returns: 273160699
740721140
"wfwijwofngdgffyf"
Returns: 169948506
898059518
"axswysngmvshg"
Returns: 710841733
613584398
"narqbhbaajhrb"
Returns: 962668623
288525767
"ttbqbqybfqbqytftuyyyutytqquufbqyubfy"
Returns: 904123406
3
"f"
Returns: 8
712798972
"ruruurnnurrurru"
Returns: 683704123
548947959
"rzaoaqhgf"
Returns: 148385469
847423730
"xgsgbhflbqbdkgpottzebhdlsqmojiwjytwbmhqw"
Returns: 132911141
2
"fg"
Returns: 9
3
"fgsdrewgregregegdsgbxcew"
Returns: 186123137
598922926
"bcncsqvmckxioommkqocmkvvkxk"
Returns: 333463236
1000000000
"ccbbcbaabcccbabcbcaaaacabbaccccacaabcbbacacaacabcb"
Returns: 773739877
23423423
"aaaaaabbaaaaaaabaaaaabaaaabaaab"
Returns: 694786151
12
"aba"
Returns: 641125324
999999999
"abnowerbnfaeoribfhaeabnowerbnfaeoribfhae"
Returns: 988230239
100000000
"babbbababbaaaaababbaaabbbbaaabbbababbbbabaaba"
Returns: 861296852
1000000000
"asdfasfdsdssadsasaasasassss"
Returns: 89216380
1000000000
"abcbacabbaaabbcabcbcabcbacabbaaabbcabcbcbaccbaabac"
Returns: 857000438