Problem Statement
Pattern: O OLO OLLLO OLLELLO OLLEHELLO OLLELLO OLLLO OLO O
Input string: "TC" (quotes for clarity only)
Pattern: C CTC C
Input string: "ABCD" (quotes for clarity only)
Pattern: D DCD DCBCD DCBABCD DCBCD DCD D
After constructing the patterns, I noticed something interesting. Starting with the first letter of the input string (which appears only once in the very center of the pattern), I can trace a path outwards toward the edges, spelling out the original input string. Of course, I only move Up, Down, Left and Right from any letter. I'm now perplexed because I want to know how many ways the original input string can be spelled out in the pattern. I must always end at an edge, and I can't go over one letter more than once while spelling a word.
Create a class WordPattern containing the method countWords which takes a
Definition
- Class:
- WordPattern
- Method:
- countWords
- Parameters:
- String
- Returns:
- long
- Method signature:
- long countWords(String word)
- (be sure your method is public)
Notes
- Remember, I only move Up, Down, Left and Right from any letter to the next letter and never use a letter twice.
Constraints
- word will contain between 1 and 50 characters inclusive.
- word will contain only uppercase letters ('A'-'Z').
Examples
"HELLO"
Returns: 60
"TC"
Returns: 4
"ABCDEFGHIJKLMNOPQRST"
Returns: 2097148
"ALKSJDLGHSDGH"
Returns: 16380
"SDG"
Returns: 12
"A"
Returns: 1
"AB"
Returns: 4
"ABC"
Returns: 12
"ABCD"
Returns: 28
"ABCDE"
Returns: 60
"ABCDEF"
Returns: 124
"ABCDEFG"
Returns: 252
"ABCDEFGH"
Returns: 508
"ABCDEFGHI"
Returns: 1020
"ABCDEFGHIJ"
Returns: 2044
"ABCDEFGHIJK"
Returns: 4092
"ABCDEFGHIJKL"
Returns: 8188
"ABCDEFGHIJKLM"
Returns: 16380
"ABCDEFGHIJKLMN"
Returns: 32764
"ABCDEFGHIJKLMNO"
Returns: 65532
"ABCDEFGHIJKLMNOP"
Returns: 131068
"ABCDEFGHIJKLMNOPQ"
Returns: 262140
"ABCDEFGHIJKLMNOPQR"
Returns: 524284
"ABCDEFGHIJKLMNOPQRS"
Returns: 1048572
"ABCDEFGHIJKLMNOPQRST"
Returns: 2097148
"ABCDEFGHIJKLMNOPQRSTU"
Returns: 4194300
"ABCDEFGHIJKLMNOPQRSTUV"
Returns: 8388604
"ABCDEFGHIJKLMNOPQRSTUVW"
Returns: 16777212
"ABCDEFGHIJKLMNOPQRSTUVWX"
Returns: 33554428
"ABCDEFGHIJKLMNOPQRSTUVWXY"
Returns: 67108860
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Returns: 134217724
"ABCDEFGHIJKLMNOPQRSTUVWXYZA"
Returns: 268435452
"ABCDEFGHIJKLMNOPQRSTUVWXYZAB"
Returns: 536870908
"ABCDEFGHIJKLMNOPQRSTUVWXYZABC"
Returns: 1073741820
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCD"
Returns: 2147483644
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDE"
Returns: 4294967292
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF"
Returns: 8589934588
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFG"
Returns: 17179869180
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGH"
Returns: 34359738364
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI"
Returns: 68719476732
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ"
Returns: 137438953468
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJK"
Returns: 274877906940
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL"
Returns: 549755813884
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM"
Returns: 1099511627772
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN"
Returns: 2199023255548
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO"
Returns: 4398046511100
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOP"
Returns: 8796093022204
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ"
Returns: 17592186044412
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR"
Returns: 35184372088828
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRS"
Returns: 70368744177660
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRST"
Returns: 140737488355324
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU"
Returns: 281474976710652
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRTSTUV"
Returns: 1125899906842620
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRTSTUVW"
Returns: 2251799813685244
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: 68719476732
"AA"
Returns: 4
"AAAAAAAAAAAAAAA"
Returns: 65532
"A"
Returns: 1
"R"
Returns: 1
"TC"
Returns: 4
"K"
Returns: 1
"XX"
Returns: 4
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ"
Returns: 137438953468
"T"
Returns: 1
"C"
Returns: 1
"H"
Returns: 1
"ABCDEFGHIJKLMNOPQRSTUVWXYZABBBHIZZZEPPPOAAQUTNNYII"
Returns: 2251799813685244
"HELLO"
Returns: 60
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: 2251799813685244
"X"
Returns: 1
"MADAM"
Returns: 60
"ABCDEEFGEADESWJFOADNDOSMGSEOSKDLSSAKEOFMMMMMMMMMMM"
Returns: 2251799813685244