Problem Statement
The anagram of a string S is any string we can obtain from S by rearranging its letters. For example, the string "haha" has exactly six anagrams: "aahh", "ahah", "ahha", "haah", "haha", and "hhaa".
We are given a
Definition
- Class:
- PalindromePermutations
- Method:
- palindromeProbability
- Parameters:
- String
- Returns:
- double
- Method signature:
- double palindromeProbability(String word)
- (be sure your method is public)
Notes
- The returned value must have an absolute or a relative error of less than 1e-9.
Constraints
- word will contain between 1 and 50 characters, inclusive.
- Each character of word will be a lowercase English letter ('a'-'z').
Examples
"haha"
Returns: 0.3333333333333333
Each of the six anagrams of "haha" will be selected with probability 1/6. Two of them are palindromes: "ahha" and "haah". Hence, the probability of selecting a palindrome is 2/6.
"xxxxy"
Returns: 0.2
"xxxx"
Returns: 1.0
This word only has one anagram: "xxxx". That is a palindrome.
"abcde"
Returns: 0.0
Regardless of how we rearrange the letters of "abcde", we will never get a palindrome.
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
Returns: 1.0
"aaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaa"
Returns: 0.02040816326530612
"aaaaaaaaaaaabaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaa"
Returns: 0.02040816326530612
"bbbbbbaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaa"
Returns: 2.3562121533422868E-5
"bbbbbbccaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaa"
Returns: 5.746858910590944E-7
"bbbbbbccaaaxxaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaa"
Returns: 1.4735535668181907E-8
"bbbbbbccaaaxxaaaaaaaaaabaaaaabaaaaaaaaaaaaaaaaaaaa"
Returns: 1.4735535668181907E-8
"bbbbbbccaaaxxaaaaaadaaabaaaaabaaaaaaaadaaaaaaaaaaa"
Returns: 3.982577207616732E-10
"aaaaabbbbbccccc"
Returns: 0.0
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhff"
Returns: 0.025641025641025637
"a"
Returns: 1.0
"vx"
Returns: 0.0
"vv"
Returns: 1.0
"abc"
Returns: 0.0
"abb"
Returns: 0.3333333333333333
"aaa"
Returns: 1.0
"abcd"
Returns: 0.0
"abcc"
Returns: 0.0
"aacc"
Returns: 0.3333333333333333
"aaac"
Returns: 0.0
"yyyy"
Returns: 1.0
"kolap"
Returns: 0.0
"kolpp"
Returns: 0.0
"koppp"
Returns: 0.0
"kpppp"
Returns: 0.2
"koopp"
Returns: 0.06666666666666667
"ooopp"
Returns: 0.2
"oooop"
Returns: 0.2
"abbccccddddddeeeeeeeeffffffffffgggggggggggg"
Returns: 8.231619072008297E-17
"aabbccccddddddeeeeeeeeffffffffffgggggggggggg"
Returns: 8.231619072008298E-17
"xxxxyyyyzzzzzzaaaaaa"
Returns: 3.092882349848294E-6
"abbcccc"
Returns: 0.02857142857142857
"abbccccdddddd"
Returns: 3.33000333000333E-4
"aabbccccdddddd"
Returns: 3.33000333000333E-4
"gwfqdjsbxaanyfsjvyyubaleoxcdsauduqnitbmbfgmfowgs"
Returns: 0.0
"jtxinudncsojfcdlpzknszjrehpma"
Returns: 0.0
"dktnyizrdauynahdunspqdqsmkjofqas"
Returns: 0.0
"gmwhogepeorswjdxazndbfswpf"
Returns: 0.0
"rsbrbjzqfnpgmjovv"
Returns: 0.0
"vqhkmgebpohbdepidenuhehydgauvmmaksn"
Returns: 0.0
"jnuiwetdrhirdydyfyfutubiq"
Returns: 0.0
"zxmsacprkokacolxpgxtdiguzxfecodxjx"
Returns: 0.0
"kbzwlrzkhnycroaxrpanjuubhe"
Returns: 0.0
"gnoimpsdfxt"
Returns: 0.0
"bqahxpqumhuuyuumxldxaabtknhu"
Returns: 0.0
"vlqlrcbzqbzhzpenquzqctgtubmxrhmhrugsmryjrg"
Returns: 0.0
"eateebjxmclawhplrwnfzsixurmgugfvl"
Returns: 0.0
"rtajybjgngnkhlifikqnqgvnkltcpxsgexzci"
Returns: 0.0
"nerldoiwtoyxmesrh"
Returns: 0.0
"rnrtgvswnqiqfjimjxsnyirnidazpnmcyafocqwtcaplq"
Returns: 0.0
"ybgvxbsxxjisnv"
Returns: 0.0
"ehlfanqhrlhhahnejs"
Returns: 0.0
"geswqxpfdefwjyz"
Returns: 0.0
"eptuwajxphkzlqkouzvllmnzfrtjpahp"
Returns: 0.0
"ihbvgdukjxrnuszzccf"
Returns: 0.0
"yioyedbsebqninslgohkwl"
Returns: 0.0
"nmbptbwxlhunatmxchejewiulldmpzprvpyjioydvbjwxbqdnc"
Returns: 0.0
"lhpsfdzzqoidqkkyysc"
Returns: 0.0
"qcwwainpxzfsdq"
Returns: 0.0
"yypnoetqeekyxyypxfmsbpfjywbpkvanuxplwr"
Returns: 0.0
"tndoxdgpzcuzfixelhsittshfbcfmgyh"
Returns: 0.0
"xjkvkmvofpuodiryucziheicggdbluixoyuipmzbkneviazg"
Returns: 0.0
"fdimocplazphyhjmtbscu"
Returns: 0.0
"xhgymycifwkpjem"
Returns: 0.0
"ylicletnzgegtopyltb"
Returns: 0.0
"fyihbwjxxdaicpbppszbkxfye"
Returns: 0.0
"hnkhccajsyuoiudbtcxplzkrmfgwbulmmxdefr"
Returns: 0.0
"tgbtgcfxuwuvqmbfffblpnipguijdyglfjxresrxsjcuckd"
Returns: 0.0
"krxzyqvgkgqyytzy"
Returns: 0.0
"jofxmjbwvebfymvjbazdg"
Returns: 0.0
"plnggeqpzroya"
Returns: 0.0
"olcvtlyzavxctvhzpsiljbbftqtxhyvuhhwymzidguhpkuuzt"
Returns: 0.0
"ttwqgyoketulxxgjcyyoabjochkpcpmfvncittoqhajfjustmf"
Returns: 0.0
"unoocibttwwfveyecbiiqsaiahgirolrahsozuydpwzeqhmtyu"
Returns: 0.0
"mlafgvpkfavjuxwvvtxylchnuwlynykmbtdnklhycxaijyatzq"
Returns: 0.0
"rfjgihdsmgbswpxqkeztfrjbrfgxsoyrkktxavjosulavhklf"
Returns: 0.0
"ttxxllyyffggyyiikkssxxffuuzzooo"
Returns: 4.2209751582284217E-16
"cceezzhhqqxxllttff"
Returns: 2.901963686277412E-8
"eettddeezzbbbbffjjllxxkkbbeeiivvxxvviilluuu"
Returns: 9.696520978894836E-23
"qqffuuiillxxjjj"
Returns: 1.48000148000148E-6
"zzggccqqbbggxxbbqqooyy"
Returns: 1.963734825300504E-9
"ggvvggrrwwhhuuzzqq"
Returns: 8.705891058832235E-8
"zznnuuuuwwxxrrggttzziinnooll"
Returns: 1.2648855557491172E-13
"uuwwyyoowwrrppvvoossqqppqquuu"
Returns: 1.9627534485762166E-13
"iimmaappddppffwwddwwiizzz"
Returns: 3.0736719004703544E-11
"rrxxttffnnrriikkk"
Returns: 2.6117673176496706E-7
"iimmjjbbrr"
Returns: 0.0010582010582010583
"tthhrrxxllii"
Returns: 9.62000962000962E-5
"rrzzuuaaeeiippeeiivvooeeffjjkk"
Returns: 7.26945721694895E-15
"mmcchhooddrraazzdduujjzzeehhwwaaffrrlll"
Returns: 2.279328864772213E-21
"oottoooojjaaxxiiaattttaaffyyqqwwqqxxtt"
Returns: 2.5927365836783925E-17
"qqhhnnhhxxnnddff"
Returns: 4.44000444000444E-6
"ppkkuubbkkssaarrkkmmffffoogguuyyrr"
Returns: 6.395416906406698E-17
"ppwwiiooggaammffooxxiibboorrvvhhh"
Returns: 2.1318056354688997E-17
"ffppnnllppwwddmmnn"
Returns: 2.6117673176496706E-7
"ggnnwwmmnnuuxxssppjjkkggnnbbbb"
Returns: 2.1808371650846847E-14
"vvzzwwvvbbffaauuwwzzzzddaaddkkmmkkxx"
Returns: 1.6445357759331513E-17
"hhiiggvvbbqqggggllvvggssddjjffqqvviinnooiibbbbdd"
Returns: 2.674375368489513E-24
"vvxxaattyyppeesssszzvvzzbbbb"
Returns: 3.794656667247352E-13
"ccppppoobbzzuuwwssrrccllzzddoonnffppttyyppyy"
Returns: 1.5083477078280853E-23
"jjllbbaavvmm"
Returns: 9.62000962000962E-5
"sszzwwkkyymmhhvvfff"
Returns: 4.582047925701176E-9
"eeggttllssyyooooqqddqqwww"
Returns: 3.415191000522616E-12
"ssppddfftteepptt"
Returns: 4.44000444000444E-6
"jjuubbttppggbbb"
Returns: 7.4000074000074E-6
"fftthhzzggssggppnnttcczzkkeee"
Returns: 1.308502299050811E-14
"kkttyytteehhccssgguullmmooffhhrrddbbccc"
Returns: 4.220979379207801E-22
"oorrmmuullbbqqeennffbbuuiikkhhssiivviii"
Returns: 2.9546855654454606E-21
"vvkkmmssqqeexxvvoohhmmrrllggssrraajjaaoohhh"
Returns: 1.939304195778967E-23
"mmiikknnqqbbaayyuuhhyyhheeoowwttppmmm"
Returns: 1.6461819578910428E-20
"vvmmvvvvzzuuvvppxxhhyyff"
Returns: 3.3203245838414325E-10
"ccggmmoovvvvwwvvooyyzzccjjddccooeettaaeekkppddmmm"
Returns: 7.797012736121029E-27
"qqffnnrrvvoorrbbnnddqqllqqwwkkhhffaabbnnzzhhkkzznn"
Returns: 1.9648472095024996E-26
"rrppffoobbjjiieeddeennrrffllkkqqggg"
Returns: 3.6545239465181142E-19
"zzyyssbbttkkiiffjjmmggnnhhllggrrvvbbb"
Returns: 5.487273192970142E-21
"kkggvvyyjjuuyymmqqssppddllnnqqyyoojjjjrrbbee"
Returns: 1.1971013554191156E-24
"xxllxxaaeezzqqbbllzzwwhhllyyggnnuuxxhhuu"
Returns: 1.8994407206435107E-20
"oolleehhssaajjddeeeeeexxyyyyiiccqqvvxxffqqffppp"
Returns: 2.1395002947916104E-26
"eewwxxiixxbbssiimmqq"
Returns: 1.3746143777103529E-8
"xxgguurrzzggssxxjjqqiiss"
Returns: 8.53797750130654E-11
"aarrzzooqqhhffjjbbssqqlljjcclleexxggffxx"
Returns: 7.597762882574043E-22
"vvqqssaappjjddyyvvrrvvwwkkggookkiiooiii"
Returns: 6.331469068811702E-21
"ooeeppllnnrrgguuiigglll"
Returns: 1.4229962502177566E-10
"ffuukksseemmssttffzziiyyrr"
Returns: 1.1383970001742053E-12
"kkppccrroojjvvccyyttyyggnnqqaaeeqqggppyynnqqddnnn"
Returns: 1.0915817830569441E-26
"ggxxhhwwllqqbbqqttffyyqqq"
Returns: 1.3281298335365727E-11
"ddzzvvhhxxnnjjddssnnddooyyiiccccbbvvssiiiiqqpplll"
Returns: 9.356415283345237E-28
"yynnppeehhcczzoowwrrggssssqqaakkeeiiffeeggttwwuuu"
Returns: 2.0792033962989408E-29
"ddeeyyjjwweeooyyjjqqvvgguukkbbeerruujjnnmmnnttaayy"
Returns: 5.198008490747354E-28
"mmccmmrrddkkjjwwyykkoopprrkkffssqqooggjjuuccggaavv"
Returns: 1.8712830566690475E-28
"ssmmuusssseewwaakkccssmmppllnnuubbiiyyuunnppnneecc"
Returns: 3.274745349170833E-26
"qqttooffffccppzziirrjjaabbccssssnnxxddooxxwwsssss"
Returns: 1.3098981396683328E-27
"sszzqqqqqqtteeppvvuuffffiimmzzqqffyyxxbbnnhhxxqqq"
Returns: 2.401479922725277E-26
"oonnqqzzxxaarrccbbhhkkbbllkkvvvvsskkoottwwkkqqkktt"
Returns: 3.929694419004999E-27
"yyaaooeeffbbkkbbkkiizzttyyffssqqccaarrttbbbbbbuuu"
Returns: 1.1789083257014998E-26
"vvssmmbbhhddllssccnneeqqvvmmrrxxmmttmmeeppmmiieee"
Returns: 1.5282144962797214E-26
"wwqqeeffkk"
Returns: 0.0010582010582010583
"zzbbkkssss"
Returns: 0.0031746031746031746
"tthhuuggg"
Returns: 0.0031746031746031746
"oowwllwww"
Returns: 0.015873015873015872
"ppeehhqqnn"
Returns: 0.0010582010582010583
"kkvvzznnn"
Returns: 0.0031746031746031746
"rruussmmgg"
Returns: 0.0010582010582010583
"vvkkrrppp"
Returns: 0.0031746031746031746
"vvllqqsss"
Returns: 0.0031746031746031746
"bbrrwwssaa"
Returns: 0.0010582010582010583
"bbccyynneerrppiiaabb"
Returns: 4.582047925701176E-9
"ssxxqqggggxxppxxhhh"
Returns: 2.0619215665655295E-7
"rrqqppppiieennrrddbb"
Returns: 1.3746143777103529E-8
"sszzppzzppiinnxxeeyy"
Returns: 1.3746143777103529E-8
"qqppuubbffooffzzsss"
Returns: 1.3746143777103529E-8
"ppddccxxppddbbddooo"
Returns: 2.0619215665655295E-7
"kkyykksszzmmyyaavvv"
Returns: 4.123843133131059E-8
"ddvvvvzzaabbiiccppvv"
Returns: 2.2910239628505883E-8
"ggttuuzzssffrrggeebb"
Returns: 4.582047925701176E-9
"vvnnqqssvvzzzzyyppss"
Returns: 4.123843133131059E-8
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbb"
Returns: 0.0013026487190620926
"aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyy"
Returns: 1.7112785154723798E-32
"aaaabbbbccccddddeeeeffffggiiigghhhh"
Returns: 8.880493190039017E-17
"xxxxyyy"
Returns: 0.08571428571428572
"xxyyy"
Returns: 0.2
"xxxxx"
Returns: 1.0
"ab"
Returns: 0.0
"aaabb"
Returns: 0.2
"abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy"
Returns: 1.7112785154723798E-32
"aaaaa"
Returns: 1.0
"aaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbb"
Returns: 4.2783688429366084E-8
"aabbddd"
Returns: 0.02857142857142857
"xxxxxyy"
Returns: 0.14285714285714285
"eebeb"
Returns: 0.2
"aaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbb"
Returns: 4.2783688429366084E-8
"xxxaa"
Returns: 0.2
"aaaaaaabbcccc"
Returns: 0.002331002331002331
"aabcabcaa"
Returns: 0.015873015873015872
"cababcacabacaababcaacbabbccabcacabacabbbcaabababbb"
Returns: 4.013422170271845E-12
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaass"
Returns: 0.02040816326530612
"xxyyyyy"
Returns: 0.14285714285714285
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabb"
Returns: 0.02040816326530612
"cbcccbc"
Returns: 0.14285714285714285
"aaaaaaa"
Returns: 1.0
"aaaabbbbcc"
Returns: 0.009523809523809525
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabb"
Returns: 0.024390243902439025
"aaaaabb"
Returns: 0.14285714285714285
"aaabbcc"
Returns: 0.02857142857142857
"aaaabbbb"
Returns: 0.08571428571428572
"aabbb"
Returns: 0.2
"eeddc"
Returns: 0.06666666666666667
"aaabbbb"
Returns: 0.08571428571428572
"aaaaaabbbbbbccccccddddddeeeeeeffffffgggggghhhhhhii"
Returns: 4.38581966406808E-23
"aaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbb"
Returns: 4.2783688429366084E-8
"baaab"
Returns: 0.2
"aaaaaabbbbbbccccccdddddd"
Returns: 1.6008707814949762E-7
"ssees"
Returns: 0.2
"gfg"
Returns: 0.3333333333333333