Problem Statement
Create a class MessageMess that contains a method restore that
takes a
Definition
- Class:
- MessageMess
- Method:
- restore
- Parameters:
- String[], String
- Returns:
- String
- Method signature:
- String restore(String[] dictionary, String message)
- (be sure your method is public)
Notes
- Don't forget the '!' at the end of the two special returns
- A proper message may require 0 spaces to be inserted
Constraints
- dictionary will contain between 1 and 50 elements inclusive
- the elements of dictionary will be distinct
- each element of dictionary will contain between 1 and 50 characters
- message will contain between 1 and 50 characters
- every character in message and in each element of dictionary will be an uppercase letter 'A'-'Z'
Examples
{"HI", "YOU", "SAY"}
"HIYOUSAYHI"
Returns: "HI YOU SAY HI"
A word from dictionary may appear multiple times in the message.
{"ABC", "BCD", "CD", "ABCB"}
"ABCBCD"
Returns: "AMBIGUOUS!"
"ABC BCD" and "ABCB CD" are both possible interpretations of message.
{"IMPOSS", "SIBLE", "S"}
"IMPOSSIBLE"
Returns: "IMPOSSIBLE!"
There is no way to concatenate words from this dictionary to form "IMPOSSIBLE"
{"A","B","C","D"}
"BADCAB"
Returns: "B A D C A B"
{"A","B","C","D"}
"ABRACADABRA"
Returns: "IMPOSSIBLE!"
{"APPLE","APPLET","ET"}
"APPLET"
Returns: "APPLET"
{"A","BA","BAB","AR"}
"ABABABABABABABABABABABABABABABABABABABABABABABAR"
Returns: "AMBIGUOUS!"
{"A","BA","BABA","AR","ABA"}
"ABABABABABABABABABABABABABABABABABABABABABABABAR"
Returns: "IMPOSSIBLE!"
{"A","BA","BABA","AR","ABA","ABAB"}
"ABABABABABABABABABABABABABABABABABABABABABABAR"
Returns: "ABAB ABAB ABAB ABAB ABAB ABAB ABAB ABAB ABAB ABAB ABAB AR"
{"TA","PEA","DOG","CAT","APE","TAPE"}
"TAPEAPEAPE"
Returns: "TAPE APE APE"
{"AB","BA","AA","BB","BABAAB","ABAAAB","BAAB","BABA","BBBA","BAAA"}
"ABBAABBBABABBAABAAABAAAABABAAABABABAAABABABABAABA"
Returns: "IMPOSSIBLE!"
{"AB","BA","AA","BB","BABAAB"}
"ABBAABBBABABBAABAAABAAAABABAAABABABAAABABABABAABAA"
Returns: "AMBIGUOUS!"
{"A","B","C","BAB","BAD","E","F","G","H","I","J","K","L","EF","M","N", "O","P","Q","R","S","T","U","V","W","X","Y","Z"}
"BAABAABBAAABAABAABAABBBBADEEABAAAABAAABAABBBBAFBAA"
Returns: "B A A B A A B B A A A B A A B A A B A A B B B BAD E E A B A A A A B A A A B A A B B B B A F B A A"
{"XYX"}
"XYXXYXXYXXYXXYXXYX"
Returns: "XYX XYX XYX XYX XYX XYX"
{"IMPOSS", "SIBLE", "S", "IMPOSSIBLE"}
"IMPOSSIBLE"
Returns: "IMPOSSIBLE"
This message can be decoded without ambiguity. This requires the insertion of no spaces since the entire message appears as a word in the dictionary.
{"AB","AC","A"}
"A"
Returns: "A"
{"AB","AC","A"}
"C"
Returns: "IMPOSSIBLE!"
{ "A", "B", "AB", "BA", "ABA", "BAB", "ABAB", "BABA", "ABABA", "BABAB", "ABABAB", "BABABA", "ABABABA", "BABABAB", "ABABABABABABABABABABABAC" }
"ABABABABABABABABABABABACABABABABABABABABABABABAC"
Returns: "ABABABABABABABABABABABAC ABABABABABABABABABABABAC"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA", "AAAAAAA", "AAAAAAAA", "AAAAAAAAA", "AAAAAAAAAA", "AAAAAAAAAAA", "AAAAAAAAAAAA", "AAAAAAAAAAAAA", "AAAAAAAAAAAAAA", "AAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: "AMBIGUOUS!"
{ "A", "B", "AA", "AB", "BA", "BB", "AAA", "AAB", "ABA", "BAA", "BBB", "BBA", "BAB", "ABB", "AAAA", "AAAB", "AABA", "ABAA", "BAAA", "BBBB", "BBBA", "BBAB", "BABB" }
"ABABBBABABBBABABBAAABABBAAABBABABBBABABBBABABBC"
Returns: "IMPOSSIBLE!"
{ "IMPOSS", "SIBLE", "S" }
"IMPOSSIBLE"
Returns: "IMPOSSIBLE!"
{ "AA", "AAAA", "AAAAAA", "AAAAAAAA", "AAAAAAAAAA", "AAAAAAAAAAAA", "AAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: "IMPOSSIBLE!"
{ "BLAH", "BLA" }
"BLAHA"
Returns: "IMPOSSIBLE!"
{ "AB", "CD", "ABCD" }
"ABCD"
Returns: "AMBIGUOUS!"
{ "A", "AA", "AAA", "AAAA", "AAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC"
Returns: "IMPOSSIBLE!"
{ "A", "AA", "AAA", "AAAA", "AAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: "AMBIGUOUS!"
{ "A", "AA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB"
Returns: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB"
{ "H", "HH", "HHCH" }
"HHHHHHHHHHHHHHHHHHHHHHHHHHHCHHHHHHHHHHHHHHHHHHHHC"
Returns: "IMPOSSIBLE!"
{ "A", "AB", "ABC", "ABCD", "ABCDE", "ABCDEF", "ABCDEFG", "BCDEFG", "CDEFG", "DEFG", "EFG", "FG", "G", "B", "C", "D", "E", "F", "BC", "CD", "DE", "EF", "BCD", "CDE", "DEF", "BCDE", "CDEF", "BCDEF" }
"ABCDEFGABCDEFGABCDEFGABCDEFGZ"
Returns: "IMPOSSIBLE!"
{ "AB", "CD", "EF", "ABC" }
"ABCDEF"
Returns: "AB CD EF"
{ "AB", "CDEF", "CD" }
"ABCDEF"
Returns: "AB CDEF"
{ "A", "AA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: "AMBIGUOUS!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA", "AAAAAAA", "AAAAAAAA", "AAAAAAAAA", "AAAAAAAAAA", "AAAAAAAAAAA", "AAAAAAAAAAAA", "AAAAAAAAAAAAA", "AAAAAAAAAAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: "AMBIGUOUS!"
{ "A", "AA", "AAA", "AAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAB"
Returns: "IMPOSSIBLE!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA", "AAAAAAA", "AAAAAAAA", "AAAAAAAAA", "AAAAAAAAAA", "AAAAAAAAAAA", "AAAAAAAAAAAA", "AAAAAAAAAAAAA", "AAAAAAAAAAAAAA", "AAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB"
Returns: "IMPOSSIBLE!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA", "AAAAAAA", "AAAAAAAA", "AAAAAAAAA", "AAAAAAAAAA", "AAAAAAAAAAA", "AAAAAAAAAAAA", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB"
Returns: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB"
{ "ABC", "AB", "CD" }
"ABCD"
Returns: "AB CD"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC"
Returns: "IMPOSSIBLE!"
{ "ABC", "AB", "C" }
"ABC"
Returns: "AMBIGUOUS!"
{ "A", "B", "C", "D", "E", "F", "G", "AB", "BC", "CD", "DE", "EF", "FG", "ABC", "BCD", "CDE", "DEF", "EFG", "ABCD", "BCDE", "CDEF", "DEFG", "ABCDE", "BCDEF", "CDEFG", "ABCDEF", "BCDEFG", "ABCDEFG" }
"ABCDEFGABCDEFGABCEDFGABCDEFGABCDEFGZ"
Returns: "IMPOSSIBLE!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA", "AAAAAAA", "AAAAAAAA", "AAAAAAAAA", "AAAAAAAAAA", "AAAAAAAAAAA", "AAAAAAAAAAAA", "AAAAAAAAAAAAA", "AAAAAAAAAAAAAA", "AAAAAAAAAAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: "AMBIGUOUS!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA", "AAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC"
Returns: "IMPOSSIBLE!"
{ "A", "AA", "AAA", "AAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAB"
Returns: "IMPOSSIBLE!"
{ "A", "G", "B", "C", "D", "E", "F", "AB", "BC", "CD", "DE", "EF", "FG", "ABC", "BCD", "CDE", "DEF", "EFG", "ABCD", "BCDE", "CDEF", "DEFG" }
"ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGZ"
Returns: "IMPOSSIBLE!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC"
Returns: "IMPOSSIBLE!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA", "AAAAAAA", "AAAAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB"
Returns: "IMPOSSIBLE!"
{ "AA", "BB", "A", "B", "AB", "BA", "BBB", "AAA", "ABAB" }
"AABBABABABBBBABAAAABBBABABABAAABBB"
Returns: "AMBIGUOUS!"
{ "A", "AA", "AAA", "AAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB"
Returns: "IMPOSSIBLE!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA", "AAAAAAA", "AAAAAAAA", "AAAAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: "AMBIGUOUS!"
{ "AB", "C", "ABC" }
"ABC"
Returns: "AMBIGUOUS!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA" }
"AAAAAAAA"
Returns: "AMBIGUOUS!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA", "AAAAAAA", "AAAAAAAA", "AAAAAAAAA", "AAAAAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: "AMBIGUOUS!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA", "AAAAAAA", "AAAAAAAAAA", "AAAAAAAAAAAAAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB"
Returns: "IMPOSSIBLE!"
{ "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAAA" }
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: "AMBIGUOUS!"
{ "ABC", "BCD", "CD", "ABCB" }
"ABCBCD"
Returns: "AMBIGUOUS!"
{ "HI", "H", "I" }
"HI"
Returns: "AMBIGUOUS!"