Problem Statement
A palindrome is a string that is identical to its reverse. For example, "a", "cac", "abba" are all palindromes.
A subsequence of a string S is any string obtained from S by erasing some (possibly all or none) of the letters in S. For example, the strings "", "cb", "abbc" are all subsequences of the string "abcbac", but "cab" and "bbb" are not.
You are given two strings A and B consisting of lowercase English letters. Find the number of distinct non-empty strings S such that S is a subsequence of both A and B and S is a palindrome.
Definition
- Class:
- CommonPalindromicSubsequences
- Method:
- count
- Parameters:
- String, String
- Returns:
- long
- Method signature:
- long count(String A, String B)
- (be sure your method is public)
Constraints
- A and B will contain between 1 and 60 characters, inclusive.
- Each character in A and B will be a lowercase English letter ('a'-'z').
Examples
"abcbac"
"cacbbda"
Returns: 10
There are ten non-empty palindromic subsequences that are common to "abcbac" and "cacbbda". These are: "a", "b", "c", "aa", "bb", "cc", "aba", "aca", "cac", and "abba". Notes: "abcba" is a palindromic subsequence of "abcbac", but it is not a subsequence of "cacbbda", thus it is not counted. "acba" is a common subsequence of both strings, but it is not a palindrome, thus it is not counted either. Even though there are multiple ways to produce the substring "a" from each of the two given strings, it is only counted once.
"a"
"a"
Returns: 1
Smallest possible example. Note that the input strings can be equal.
"bc"
"adea"
Returns: 0
The are no common letters in the strings.
"abcdefghhgfedcba"
"badcfehgghefcdab"
Returns: 160
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
Returns: 60
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
"z"
Returns: 1
"o"
"oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"
Returns: 1
"abababababababababababababababababababababababababababababab"
"babababababababababababababababababababababababababababababa"
Returns: 7049152
"babababababababababababababababababababababababababababababa"
"abbbabbaaabbbababaaabbbaaababaaabbbabbbaabaababaabaaababbbab"
Returns: 581749
"abbbabbaaabbbababaaabbbaaababaaabbbabbbaabaababaabaaababbbab"
"abababbbaababbaaaaabbbabbbaaaaaaaababaabbbababbbbbaaaabbbabb"
Returns: 120905
"abcdefghijklmnopqrstuvwxyzabcddcbazyxwvutsrqponmlkjihgfedcba"
"abcdefghijklmnopqrstuvwxyzabcddcbazyxwvutsrqponmlkjihgfedcba"
Returns: 2147483582
"abcdefghijklmnopqrstuvwxyzabcddcbazyxwvutsrqponmlkjihgfedcba"
"abcdafghitkcmnopqrstuywxyzabcddcbazvxivujsrqponmlkjwhgfedlbe"
Returns: 2229605
"nandgiobvijxmaymqsbrregqycskhculdupvadhdfbawwczobktpzxeljftc"
"abcdefghijklmnopqrstuvwxyzabcddcbazyxwvutsrqponmlkjihgfedcba"
Returns: 1199
"zncdxcdkabxojhdajgbfmqsslpwiiaucmkaezwqpnguvevofdrlttyhyrbbc"
"nandgiobvijxmaymqsbrregqycskhculdupvadhdfbawwczobktpzxeljftc"
Returns: 526
"zzzdzzzkzbzzjzdajgbzzzzszzzizazczzaezwqzzgzvzzozdrztzyhyzbzz"
"zzzzzzzzvzzzzazmzszzrzzqyczkhzzzzzpvzdzdfzzwzzzzzkzpzxezzzzz"
Returns: 159
"eeeeezeeeeeezeemeeezreeqyeekhezzezpvzdzefezeeezzeeepeeeeeezz"
"eezeezeeebzzeeeaegeeezesezzizeeceeaeeweeeeeeezoeereteehezeze"
Returns: 2507
"ueeuuzuuuuuuzuumeuuuueequeeuuuzzuupuzduuuuuueuuzeuupeeuueuzz"
"uezuuuueeuuuuuuuuuueuueuuzuuzuucueaueueeuuueeuoueuuueuueuuue"
Returns: 8107
"zzzzuzzzeuzuuzuuzzzeuuzzuzuuzzzzzzzzzzzzuzzezzzzezuzzuzezzue"
"uzezzzuzuzzzzzzzzzzzzzzqzzeuzuzzuzzuzdzzzuzzeuuzzuzzezzueuzz"
Returns: 36035
"zzzzuuzzduoqujaxzzzeuuzntzguzzpzzrzzzmzzuzcezwzzvylzzufezzub"
"uzezzzuzjzuzzzzzzflzyqzvpzzuzuztesznmdodzuzzeruzzuzhezzueuzx"
Returns: 4359
"rvfmrkacmlyhtsqxtokdcfkxccmybilbbuymccxfcdkotqsutfehymcarmsr"
"smmrkachmlyftusqxtokdkxccmybilblimkfdotxqstehylmcrmmfvsr"
Returns: 98303
"smrmkalhmluftusqxtokdkxccmyyicbmimkfdotxqstehylmcrmlfvsr"
"rvfmrkacmlyhtsqxtokdcfkxccmybilbbuymccxfcdkotqsutfehymcarmsr"
Returns: 39745
"jighheiicefccdahcbgcedbbfjbbaejjbbebgjfbbdebcchhdcfecfehgij"
"ihhifcefcdahcbgbedbfjgbbaejjbbjabbgfbeacgchaccfecfiiehgij"
Returns: 115208
"ihgifcefadahcbhbedbfjgbbaejjbhjcebgfbeacgcbaccfzcfiibhgij"
"jighheiicefccdahcbgcedbbfjbbaejjbbebgjfbbdebcchhdcfecfehgij"
Returns: 49393
"abcaacddbccabcbcadcbdadadaaaaaadadadcdacabcbaccbdbdcdaacbba"
"abbacacdcdbccabcbaadcbdaadaaadadacdacabcbaccbdbdcdcacbb"
Returns: 1179951
"abbacjcdcdbacabcbbadcbdaadaaabadccdacabcbacc"
"abcaacddbccabcbcadcbdadadaaaaaadadadcdacabcbaccbdbdcdaacbba"
Returns: 41418
"babbbbaabbababbaaaaababbaaabbbbaaabbbababbbbabaabababaabaaab"
"bbabababbbabababaababaaaaabbabaaaabaaaabbaaabbbabaaabaabbbab"
Returns: 193815
"baabacacababcaacbcccbaccacaabcbaaccbcabccbccbcbbcbabccaacbab"
"bccbccabcbcbabccaaaacbbbcccbbbaaaacacaacccbcbacccbacacbaabcc"
Returns: 285783
"caddcaacdcbbbccbaaaccbaaccabcaaaaddcadbdbcbcaddbdadbbacdccaa"
"caacadbadcdaaadbaccdcbbabdddbaddadbadcacaacbabcaaaacbbcdaccb"
Returns: 94749
"daeaebebcaeeeedbaaaceedabcedbebeeccbebcddecdddbdddddddaecbde"
"abdceadddcdcbacbadcebaebaedcadbcecedecddabcdebaeecaceeeeaeda"
Returns: 72583
"fecfdgcgfaafecdafddfaebgfcbgfaddcfgffbebafgcfacceffcaecggbdc"
"ggdgdbegcafadccgccgegffgcadaggaeeedffbefgcgceggeagcgeadefaec"
Returns: 46922
"ajhjjdcedhbccacbhfbhebhbbbhaeaifbggcbjgeiaibaccjhfgegdhjhejb"
"hagaifdjebfebffejidifccchadegdgddeedjhcfijacehgfhbdddifbaihg"
Returns: 3844
"ddgamijnddjbilnkkbfmfhfedefjgbfkeliademefhgaedkadakgfbkifcbk"
"bggdcmefackghagjbajemgkdffljhkfidjlfhniincaeaenccjebnneeealj"
Returns: 1089
"anodledoghcnhlccbaaefeagdmolbdficlmfbaehhgmhjgbkhiaemhdbecem"
"mcggnkmgkbfkadjbbkmadefalaiicnmgaknffkmidcdkmmmgobgjfdjidkim"
Returns: 1149
"kqtmlhrtrgmrbpisepqfgioiinsrpmofafrdmhcbnotobtfrobcmbqmkcctr"
"onpglekdlmrrtilahqkbkmfljrbdlmagshejmoeptbmsjqkqeajofoggdtjp"
Returns: 813
"gvjwdvjjafqzzxlcxdzncqgjlapopkvxfgvicetcmkbljopgtqvvhbgsdviv"
"hesnkqxmwrqidrvmhlubbryktheyentmrobdeyqcrgluaiihveixwjjrqopu"
Returns: 196
"bb"
"abbbaaaababababbbba"
Returns: 2
"aaaaaaaaaaaa"
"aaaaaaaaaa"
Returns: 10
"eddcbffbdbcfebabafccbbfbeafcbffdacdafcbddbcbccacabcbcbcaaaa"
"fffcf"
Returns: 6
"ccbdfcffbffc"
"cfece"
Returns: 4
"aaaaaabbabaaa"
"bbab"
Returns: 5
"chgc"
"bccibaifbaeigbbcgaa"
Returns: 4
"cqto"
"eqkhonrtakmm"
Returns: 3
"c"
"dbbca"
Returns: 1
"ae"
"ebggc"
Returns: 1
"babab"
"aabbbbb"
Returns: 5
"fd"
"dc"
Returns: 1
"dcca"
"acaa"
Returns: 2
"dcbdccc"
"bacbcbadaacadbabbaddddcbcbccdbaabdbdabc"
Returns: 11
"i"
"bleeppdc"
Returns: 0
"bafebddeadd"
"ceaeddeedcfceeceabcfccefebcaaabaebefcceadbafddd"
Returns: 30
"hjd"
"ei"
Returns: 0
"hagibfdfhgbbeheaegfefidacbigc"
"bch"
Returns: 3
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"a"
Returns: 1
"aaaaaa"
"aaa"
Returns: 3
"abcdefghijklmnopqrstuvwxyzzyxaaxyzzyxwvutsrqponmlkjihgfedcba"
"abcdefghijklmnopqrstuvwxyzzyaxxayzzyxwvutsrqponmlkjihgfedcba"
Returns: 1090519036
"abcdefghijklmnopqrstuvwxyzabcddcbazyxwvutsrqponmlkjihgfedcba"
"abcdefghijklmnopqrstuvwxyzabcdcbazyxwvutsrqponmlkjihgfedcba"
Returns: 1610612690
"abcdefghhgfedcba"
"zzzzzzzzzzzzzzzzzzzzzbadcfehgghefcdab"
Returns: 160