Problem Statement
You work at a company specializing in internet-related technologies, and your current project is a spam filter. This filter determines whether or not a string contains spam-like information using a "spam-words-dictionary" (SWD). If an input string contains at least one word from this dictionary as a substring, the filter considers it to be spam-suspicious. (Note: an entire string is considered a substring of itself.)
You've decided to solve a more challenging problem: how many unique strings of length n, composed entirely of lowercase letters, are spam-suspicious for a given SWD? You are given a
Definition
- Class:
- SuspiciousStrings
- Method:
- getAmount
- Parameters:
- String[], int
- Returns:
- int
- Method signature:
- int getAmount(String[] dictionary, int n)
- (be sure your method is public)
Notes
- "Substring" is formed of consecutive letters (so, it's NOT a subsequence of letters).
- "x modulo y" means the remainder of x divided by y.
Constraints
- dictionary will contain between 1 and 10 elements, inclusive.
- Each element of dictionary will contatin only lowercase letters ('a'-'z').
- Each element of dictionary will contain between 1 and 10 characters, inclusive.
- n will be between 1 and 2147483647, inclusive.
Examples
{"x"}
1
Returns: 1
All one character length strings are allowed except for "x".
{"ab","bb"}
2
Returns: 2
Suspicious strings are "ab" and "bb".
{"ab","bb"}
5
Returns: 6350
{"aab","bba"}
5
Returns: 4054
{"xxxxxx","xxx","x","yyxyy","xxxyxxx","y","yx","xy","zzzzzzzzzz"}
5
Returns: 8752
{"aaaaaaaaaa", "bbbbbbbbbb", "cccccccccc", "dddddddddd", "eeeeeeeeee", "ffffffffff", "gggggggggg", "hhhhhhhhhh", "xxxxxxxxxx", "zzzzzzzzzz"}
2147483647
Returns: 5040
{"xy","xx","yx"}
2
Returns: 3
{"testtest","test"}
18
Returns: 3022
{"aaabbb","bbbaaa"}
16
Returns: 9396
{"ssssssssss"}
9
Returns: 0
{"pppppppppp"}
10
Returns: 1
{"tttttttttt","yyyyyyyyyy","kkkkkkkkkk","nnnnnnnnnn","aaaaaaaaaa","mmmmmmmmmm", "qqqqqqqqqq","pppppppppp","bbbbbbbbbb","jjjjjjjjjj"}
1073741823
Returns: 2720
{"muhmx","tbszq","lsdxrmzxq","jbocsznxjb","mmpvk","ewxzuacchf"}
169465347
Returns: 890
{"kyyrknywut","v","qcbbyznoo","fplcufh","kbpv","wzy","lbigab","bhwpsmlpu"}
321787702
Returns: 1720
{"mgkkikj","ljghhji","ihhmmmmi","mlmmmlk","kmhililj","ikimk","ljjmkgh","jlhgl","jlhhm"}
8
Returns: 1122
{"kmglk","ikgkkk","ighgmkhmg","mmilg","jkjiilllkm","jkkiiljkmi","kkmklggg","ghklhkhill","ilkmijg","iigilkmk"}
8
Returns: 2690
{"kmhmkgh","hjhmgkjljg","hmmmmlj","klmhjmj","iimhlklihm","jkkjgh","mhhlhj","iiimmgjki","mkkhmkj"}
1
Returns: 0
{"ilhjg","ghghmlhhkg","lilikkmklg","lmlhhkji","klhmgi","jlhigl","glhigkl","llkhhmjglg"}
3
Returns: 0
{"gikgki","kikhiihg","kljhkilk","jghmjlj","ikhiihmgm","llklhlik","mgimiimmj","kmiliiki","gkmjij","glhghjmk"}
4
Returns: 0
{"lmllkgj","iilkmjjgg","mljljjll","mgjikgmgk","hljiighjki","jlljl","iglgmgj","hmgmimgl","kilhmk"}
9
Returns: 9294
{"khlhlhjm","lllmkgh","ilglkjhg","glkijmgigi","ijgmhg","kgiggjih","kjhmjkjlj","hmmjhhjlmm"}
4
Returns: 0
{"vhef","xdunklm","zxassx","soruhb","wm","dpzsktcxd"}
1277958538
Returns: 7072
{"nautfkkvz","tlvx","tctq"}
391619553
Returns: 1104
{"kfo","vryucpgqkf","sllgxrb","t","oimjfmggps","ddtizzclqr","vnwihj"}
1658970893
Returns: 3646
{"ostkusve","boiyyn","gcu","xvqdayjl","hfzarfp"}
925344302
Returns: 5360
{"wmemiroj"}
1993813358
Returns: 2688
{"vsf","w","rw","agblir","ymhuvrewyc","wq","vjhix","izmyrl","ngryeo","u"}
1
Returns: 2
{"fuecbqdcr","tlzuf","wbiz","x","itdy","yob"}
1228691106
Returns: 2613
{"msbt","seiscoi","as","bmffr","zbxfmzxhtt","odubw","qknbljs","fossgi"}
1306212165
Returns: 8086
{"qvmacr","pfsxokya","dwluixhsu","seobrzog","anvsikkz"}
1517632626
Returns: 9698
{"n","jvuwjg","v","vpfsmjjcdb","hokhikusco","ase","bwtdisg","uheofhr"}
1568770062
Returns: 9832
{"kny","d","kwwcoj","yg","nu"}
1623644892
Returns: 9688
{"wlbqrb","z","tplbu","nmlkwydfwc","pd","ugkumpjmeg"}
2067419357
Returns: 1229
{"qco","vdaaymouu","dlxawy"}
2134972478
Returns: 1708
{"ommvwau","ftjopbawb"}
282435424
Returns: 880
{"v","wgegxzedc","bnewfi","vnatn","tgrgrfftf","bfpbm","sevrgqox","zsmp"}
19386926
Returns: 3090
{"s","qetlqiijja","xtjm","n","pmnt","eb"}
1591803662
Returns: 9906
{"rsyasohm","ga","ld","ulx"}
1652704556
Returns: 3167
{"dmauhuccld","lgvkrpn","eippb","rdox","azbodtz","vdaas","gthqjwr","kpnz","uvtxpb","qtrsx"}
722997388
Returns: 6835
{"xxjs","gecvodpc","vxmyi","blvss","fehlixls","hcup","kbcipbrsb"}
345283398
Returns: 1300
{"wybq","i","wzwxxacycf","lspottmp","oghjxzz","rk"}
1376994792
Returns: 9428
{"ezffc","gcghucg","ygppmhprh","edi"}
1656385931
Returns: 2722
{"kw"}
1335452692
Returns: 1627
{"qgea"}
279550175
Returns: 7392
{"xsspdgjiel","gigd","tfceik","htbajv","gck","fqgo","av","kcmsz"}
697814744
Returns: 2622
{"gtqz"}
1834801500
Returns: 8833
{"ps","hbxahxjfs","p","attdaruca"}
594265473
Returns: 3277
{"fddpbhvka","onl","ajyfq","smmilypwu","kypzjodat","hvk","dfontgnty","gsopfvjfuq","khnjv"}
435643524
Returns: 5918
{"pla","idjymsa","fihxje","dmpsmoiabg","alqxvfu","skkxdmjt","rdpomjgg","qc"}
701202974
Returns: 209
{"chuihqsnld","ogckzulnsa","coqxypqlen","izzvhdskjf","ryoiqqydvv","gdvqqklfia","twyohryspc","dnaczekoge","dvdrhfmjbh","tpkcrgnrto"}
1090793943
Returns: 1456
{"itwkdmvftz","cgkfjncaww","uqcsxrzazd","vpgwcxepdv","pqdirrtnhq","nlmrbatgth","joufmpbpgr","fjdivsjjlf","ryslkvresu","ulgixrmwfd"}
1073741823
Returns: 9264
{"puztwtcrjf","wlmxxcvcpw","zoysgcgvmi","kqhebgkbkb","kqmglnxzvr","bvfbvmxcbw","coevggnlem","ianhspnvbg","dpdtazoyyl","eqvicahtcl"}
737583858
Returns: 2643
{"fehjubimwm","tnpwiagnyg","xuxiojdytt","jfdeolhtch","rsyrxgofvk","blnfifokwx","auyfsdvwxp","oeskbqlena","opdcgzinsy","fkvaumznpt"}
81228650
Returns: 5456
{"vlngmxskeg","mhvtrwhkca","orkbypecwo","ffnpgloepa","tmxhcaujot","urxaxcmzjg","subwbjxpgu","lqtoerlemh","dabyzilbja","czcepepdgc"}
1492698180
Returns: 9811
{"aabbbabaab","aaabbabbba","bbababaaba","abaabbaaaa","bbabbbabba","aaaabbabaa","babbbababa","abbabbabbb","bbbbbabbba","baabaaaaba"}
729788645
Returns: 2049
{"aaaaaaaabb","aaaaabbabb","abaabababa","abbabbbbab","baaabaabab","ababbbaaab","aabbabaaaa","aabbbabbbb","babbaaabab","babbabbabb"}
1992504133
Returns: 2904
{"baabbbbbba","bbaaaaaaaa","babaabbaba","bbbbabbbaa","bbabaabaaa","babbaaaaab","babbbabbab","aaaaaaabab","aaaaababab","babaababaa"}
1073741824
Returns: 4727
{"bbaabbaaaa","abaaabbaab","aaabababbb","baabaaaaaa","aaaababbbb","abaaaabaaa","bbabbbbaba","babaabbbba","baabababbb","bbbbabbbbb"}
1667690330
Returns: 2295
{"aabaabbaba","baabbbabba","aabaabbaab","abbbbbbbaa","bbaaabaaab","aabbbaabab","aababababb","abababbaab","bbaaabbabb","aaaaababba"}
804359459
Returns: 7064
{"baaaabbbba","abbbabbbbb","baababaabb","bbabaaabba","bbabaababb","aaabbbabab","bbbbbaaaaa","aaaaaaaaba","aabbabbabb","bbbabaabab"}
330893685
Returns: 5364
{"aaaabbbbab","bbbabbabab","baaababbba","baababbaba","aaaaabbaaa","abbbababaa","bbaabaaaab","aabaabbbba","babbbabaab","aabbbababb"}
1233
Returns: 9798
{"abcdefghij","bcdefghijk","cdefghijkl","defghijklm","efghijklmn","fghijklmno","ghijklmnop","hijklmnopq","ijklmnopqr","jklmnopqrs"}
1642649847
Returns: 936
{"abcdefghij","klmnopqrst","uvwxyz"}
1000059993
Returns: 1984
{"q"}
2147483647
Returns: 551
{"fifi","fi"}
4
Returns: 2027
{"test","testtest"}
8
Returns: 4827
{"test","testtest"}
4
Returns: 1
{"test","testtest"}
10
Returns: 6073
{"fi","fifi"}
2
Returns: 1
{"fi","fifi"}
4
Returns: 2027
{"ngwrtuodnm","pthqbgonm","zroqnve","algmeibh","algoritm","algo","nve","nm","qbg"}
7777564
Returns: 1180
{"abcd","abcd"}
4
Returns: 1
{"aa","bb","aa"}
2
Returns: 2
{"topcoder","codertop","topcoder"}
10
Returns: 4056
{"abcd","ghju","abcd"}
5
Returns: 104
{"tiptip","tiptop","toptop","tiptip"}
1000000000
Returns: 1552
{"killbill","killbill","killbill","killbill","killbill","killbill", "killbill","killbill","killbill","killbill"}
777478
Returns: 8368
{"tttttttttt","yyyyyyyyyy","kkkkkkkkkk","nnnnnnnnnn","aaaaaaaaaa","mmmmmmmmmm", "uuuuuuuuuu","pppppppppp","bbbbbbbbbb","jjjjjjjjjj"}
2147483647
Returns: 5040
{"tttttttttt","yyyyyyyyyy","kkkkkkkkkk","nnnnnnnnnn","aaaaaaaaaa","mmmmmmmmmm", "uuuuuuuuuu","pppppppppp","tttttttttt","jjjjjjjjjj"}
2147483647
Returns: 8630
{"x" }
1
Returns: 1
{"cacaac", "aaccac", "ccacca", "aaaccacac", "caacaaccc", "acaacacaa", "aananabva", "assdfafjj", "assffaasd", "ccacaass" }
1999999973
Returns: 1466