Problem Statement
You are traversing a dangerous section of a video game level. The section contains some solid terrain blocks (denoted '-') and some blocks with spiky traps (denoted '*'). If you step onto a trap, you die.
You are given the layout of the level in the
Your task is to reach the block at the opposite end of the level. This block is also guaranteed to be solid.
You can move in three ways:
- Take a step (denoted 'S'): move one block to the right.
- Make a hop (denoted 'H'): hop over one block and land two block to the right of your current block.
- Make a jump (denoted 'J'): jump over two consecutive blocks and land three blocks to the right of your current position.
For example, if the level is "----", you can traverse it by making three steps (denoted "SSS"), a hop followed by a step ("SH"), a step followed by a hop ("HS"), or a single jump ("J").
If the level is "-**-", the only way to traverse it is by making a jump - remember that you cannot step onto the spiky traps.
Find whether it is possible to traverse the level you were given. If yes, return a string of letters 'S', 'H', and 'J' that describes how to do it. (If there are multiple valid strings, you may return any one of them.)
If traversing the level isn't possible, return an empty string instead.
Definition
- Class:
- StepHopJumpEasy
- Method:
- solve
- Parameters:
- String
- Returns:
- String
- Method signature:
- String solve(String level)
- (be sure your method is public)
Constraints
- level will contain between 2 and 200 characters, inclusive.
- Each character of level will be either '-' or '*'.
- The first and the last character of level will be '-'.
Examples
"----"
Returns: "HS"
As explained in the statement, there are four acceptable answers for this test case: "SSS", "SH", "HS", and "J". You may return any one of them.
"-**-"
Returns: "J"
Here, "J" is the only acceptable answer.
"-*--**---***----****-----"
Returns: ""
This level has no solution - there is no sequence of steps, hops and jumps that gets you from the left end all the way to the right end.
"-*-*------"
Returns: "HJJS"
The first move must be a hop. Then, the second move must be a hop or a jump. In all other cases you will step onto a spiky trap and die.
"---"
Returns: "H"
Here, the only solutions are "SS" and "H". Note that the player cannot jump, as the level is not long enough for a jump - they would jump beyond the end of the level.
"--"
Returns: "S"
"-*-"
Returns: "H"
"--*-"
Returns: "J"
"-*--"
Returns: "J"
"--*-**-*-**-*-*-**-*-*-**--*-**----*-*-**-**--*-**-*---**-**-*-*---**-*-**-**-*-**-*-**-**---**--"
Returns: "JJHJHHJHHJJJJHHJJJJJSJJHJSJHJJHJHJJHJS"
"--*--*-**-*-**--"
Returns: "JJJHJS"
"-*--**--**-*--*-**--*-**-*-**-*--**-*-*-**-**--*-*-**-*-*-**-**--**--**--*-*-*-**-**--*---**-**---*-**-**-**-*-*-*--**-*-**-**-**-**-*-**-**-*--"
Returns: "JJSJJHJJJHJJJHHJJJHJHHJJSJSJJHHJJJHJJHHJJJHHJJHJJJJHJJJ"
"-**---*-*--"
Returns: "JHHJ"
"---*-----**-**-*-**-*--*-*--**--*--*--*----**-**-*--*-**-*-**-**--**----**-*-**--**--**--*----*--**-*--**-**-**--**-**-*-**-**--**-*-*-**---*-*-*-*-**-*-**---**--*-**-*--*-**-**--*--"
Returns: "HJJJJHJJHJJJJJJJJJHJHJJSJJJHJSJSJJJJJJJJJSJJHJJSJHHJHHHHHJHJHJJJJHJJJS"
"-*-**---*-*--*--**--**-*-*-*-**-**-**-**-**--**--**-*--*-**-*-*--**--**-**-**-**-*-**-**-*-**-*-*-**--**-**---**-*-*-*-**-*---**-**-*-*--*-**--*-**-*-*--*--*-**-*-*-*-*-**---**-*---*-*--"
Returns: "HJHHJJJSJHHHJJJJJSJSJJHJHJJSJJJJHJJHJHHJSJJHJHHHJJSJJHJHJJJHJJHJHHHHJHJJJJ"
"-*-**-*-*--*---*-*-*-*--**-**-**-*-*-**--**-**-*-**-**-**-**-**-**-*-**-**--**-**-*---**--**--*-*---*--**-*--**--**--**-*--*-*-**-*-**-*--"
Returns: "HJHJJJHHJJJJHHJSJJHJJJJJJHJJSJJJSJSJJJJSJJJSJSJJHHJHJJ"
"-**-*---*-*-**--**--**-*-*-*-**--*--"
Returns: "JJJHJSJSJHHHJJS"
"-**-*-*-**--*-*---**-*-*-**-**--*-*--*--*-**--**--**-**--**-*-**-*-**-**--**--*-**--*-**--*-**-*--**-*-**--**-**-*--*---**------**--**-----"
Returns: "JHHJJJSJHHJJJJJHJSJSJJSJHJHJJSJJJJJJJJJHJSJJJJSJJHJSJJS"
"-**-*-*--*-*-**-**--**-*--**-*----**--"
Returns: "JHJHHJJSJJJJHJS"
"-*--*-**-**-*-**-**-**-**-*-**-**-*-**--"
Returns: "JHJJHJJJJHJJHJS"
"-*-**-*-**-*---*--**-*--*-**---*-*-**--*--**-*-*-**-**-*-**-**----**--**-*-*--**--*---**-**-*--**-**-**--*-*--**--*--"
Returns: "HJHJJJSJJHJHHHJJSJHHJJHJJJJSJHJJJHJJJJJJJJJJS"
"---*-**--**-*-**-**-*-*--*-*-*-*-*--**-**-**-**-*--*-*---*--*-*-**--*-**-**-**-*-*---*-*-----*-*---"
Returns: "HHJSJHJJHJHHHHJJJJJJHJJJHJJJJJHJJJJHJS"
"---**-**--*-**--**-*-*--*-*--**-**-**-*-*-**-*----*--**--**-**---**-**--*-*---*--"
Returns: "HJJJJSJHJHJJJJHHJJHJJSJJHJJJJJS"
"-**-*-**-*---*-**-**-*--**-*-*-*-**-**-*-**--*-*-*--**-*-*--*---**-**-**---**----*-*-*-**-*-**-**---**-**-**-*-**-**-*-*-**-**----**--**-**------**--**-*-**-**-*-**-**-*-**-**--"
Returns: "JHJJJJJJJHHHJJHJJHJJHJJSJJJHJJHHHJHJJHJJJHJJHHJJJJSJJJHJSJHJJHJJHJJS"
"--**-**-**--"
Returns: "SJJJS"
"-**-----*-**-*-**-*-*-**-*-*-*-**---*-*-*-**-*-*-*-**-*-*-*-*--**-**-*--*-*--**--**--*-**-*-**-**-**---*-*--**--*-*-**-*--*-*-*-*-**---**--**--*-**--*-**-**-*--**-*---"
Returns: "JJJJHJHHJHHHJHHHHJHHHJHHHJJJJHJJSJJJHJJJHHJJJHJJHHHHJHJSJJJJJJJJJS"
"--**--**-**-**-*-**-**-**--**---*-*--*-**--"
Returns: "SJSJJJHJJJSJHHJHJS"
"---*-**-**--*-*-**-**--*---**-**-**-**-**--*-**-*--*-**-*--*-*-**-**--*-*-**-**-**-**-*-**--**--*-*-*---**--*-*-*--*---*-**-**---**-*-*--*-**--**-**---*-*--*----**-**-**--**--**-*-*-*-*---**--"
Returns: "HHJJJHJJJHJJJJJJJJHJJHHJJJHJJJJHJSJJHJSJJHJJJJJHJHJHJSJJHHJJHJJJSJSJHHHJSJS"
"-*---**--**-**-*-**-**-*---*-*-**-**-**-*-*-**---*-*-**--**-**-*-*-*-*-**--**-**-**--"
Returns: "JSJSJJHJJJJHJJJHHJHHHJSJJHHHHJSJJJS"
"-*-**-**--**------**-**-**-**-*-**-**-*--*-**-**-**-**-*-**--**-*-*---**-**-*---*-*-**-*-*-**--**-**-*-**-*-*-*-**--**-*--*-**-*-*-*-*----*--*---**-**-*--*--**-*-*-**-*--"
Returns: "HJJSJJHJJJJHJJJHJJJJHJSJHJSJJJJHJHHJSJJHJHHHJSJJHJHHHJHJJSJJJJJHHJJ"
"--*-*---**--**-*-*----*-**-*-**-**--**--**-*-**-*-**----*-**-*--**-**-*-**-**-*-*-*-*-**---*-----**-**-**-*-**-**--*-**-**-**-**-**--*-**---"
Returns: "JJSJSJHJHHJHJJSJSJHJHJJHJJJJHJJHHHHJHJJJJJHJJJJJJJJJJH"
"-**--*-*--**-----**--**-**-**-**-**--*--*---*-*--*--**-*-**-**----**-**--"
Returns: "JJJJJSJSJJJJJJJHHJJJHJJJJJS"
"-**-*-*-**-**-*--*--**--*--*-**-*--*--*-**--*-**----**---*-**-*-**--"
Returns: "JHHJJJJJJJJJJHJJJJJHHJHJS"
"-**-*-**--*---**-*-*--*-*---**-*-*-*-*-**-**--*--**--**-**-*-**-**-*--*-*-**-**--"
Returns: "JHJJHJHJHJSJHHHHJJJSJSJJHJJJHHJJS"
"-**-**-*-**-*-**--*-*-*-*--*-*---**-*----*-**--*-*-**-*-**--*--"
Returns: "JJHJHJJHHJHJSJJHHJJHJHJJS"
"-**----**-*-*--**-*-*--"
Returns: "JJJHJJHJ"
"-**-*---*-*--**--**-*--*-*-**-**-**--**-*---*--*-*--*-**-*--*-**-----*-**---"
Returns: "JJJJJSJJHHJJJSJJJJJHJJHJJJJH"
"-*---**-**-----*-*-*-**-*--*-*-*---*-*-**--**-**-**---**-*-**-**-**---**---**-*--**-*---*-*--*--*-**-**---*-*--*--*-**-**---"
Returns: "JSJJJJHHJJHHJJHJSJJJHJHJJJHJHJJJJJJJHJJHHJJHJJH"
"--*--**---*-**--**-*-*-*-*-**-**-**-**-**-**-**-**-**-*-**--**----*-**-*-*-*-**-*--*-*--**-**-*-**-**--**-*-**-*-*-----**-*-**-*--"
Returns: "JSJHHJSJHHHHJJJJJJJJJHJSJJHJHHHJJHJJJHJJSJHJHJJJHJJ"
"-*-**-*--**-**-**-----*---**--*-**-**-*-**--**-**--"
Returns: "HJJJJJJJHJJJJHJSJJS"
"---*-*-**-**-**-*--*-*--**-**-*-**-*-*-**-**-*--*--**-----*-*--**-**-**-**-**--**-**-*--**-**--**--*-*-*--**-*-**-**-**--**-**-*-**--*-**-*--"
Returns: "HHHJJJJHJJJHJHHJJJJJJJJJJJJJSJJJJJSJJHJJHJJJSJJHJJJJ"
"-**----*--**-**-**--**-*--*-**-**-*-**--"
Returns: "JJJJJJSJJHJJHJS"
"-**-*-**---**-*-*--**---**-**---*--**--**---*-*-*-*--**-**--*-*--*-**-*-*---*-*-*--*-**--*-**--**-**--*---**-**---*-**-**--*--"
Returns: "JHJHJHJJHJJHJJSJHHHHJJJJJHJHJJHJHJJJSJJJHJJHHJJJS"
"-**-**-**-**--*----**-**-*--*-*--*-**-**-*---*-*-**-*-**--**-*---*-**--**---------*---**-*-**----*-**-**--**--*----*--*-**----**-**-**-*-**-**-**--*--*-*---*---"
Returns: "JJJJJJJJJHJHJJJJHJHJSJJJJSJJJHJSJHJJHJJSJJJJHJJJJJHJJJJJJJH"
"--**-*-*-*-**-*--*-**-**-**-*-**--**-**---**--**--"
Returns: "SJHHHJJHJJJHJSJJHJSJS"
"--*-*-*--**--*-**-*---**-*--*-*-**--**--**-*-*-**-*--*-*-**-*--*--**-*-*---*-----*--*-*--**--**--**-*-*-**--*-*-*-*---**-*--"
Returns: "JHJJJJJSJJHHJSJSJHHJJHHJJJJHJJJJJJJSJSJHHJJHHJSJJ"
"-*-**-**-*-**-*-**-*--*--*--"
Returns: "HJJHJHJJJJ"
"-**-**-*--**-----*-**-*-*----**-*-**-**--**--*-*--*----**--**-**-**--**--*-*-*--**-**-**-**-*-**--**--**-**-**-*--"
Returns: "JJJJJJJHJHJHJJSJJJJHJSJJJSJJHJJJJJHJSJSJJJJ"
"-*-**-*-**-**-*-*--*--**-**-*-*-**-*-**-**---*-**--*--**-*-*----**-*-**--**---*---*-**-*--*-**--**-**-*----*-**--*---**-**-*-*-----*-*-**-*-**-*-*-*---"
Returns: "HJHJJHJJJJHHJHJJHHJJSJHJHJHJSJHJJJJHJSJJJHHJJHJJHJJHHJHJHHJS"
"---*-**-**-**-*--**--**---**-----**-*---**---**--"
Returns: "HHJJJJJSJHJJSJJSJHJS"
"-**-*-*-*-**--*-**-*--**--**-*----*--*-*---**-*--*--*-**-**-*-**-**-*--*--**-*-**-**--**--**--"
Returns: "JHHHJJJJJSJJHJHJSJJJHJJHJJJJJHJJSJSJS"
"-*---**-*--**--*--*-**-**--*---*-*-**--*--*-----*--*--**---**-**-**-*-*-*-*-*-*-*-**---*-**-**-**-*-*-*-*--**-**-**-**--*--"
Returns: "JSJJJJJJJJHHHJJJJJJSJHJJJHHHHHHHJHHJJJHHHJJJJJJS"
"-**--*-*-**--*----*-**-*-**--*--*---*-**-**-**---*-**--**-**-*-**-**-*-*-**-**-*-**--**-**-----*-**-*-*-**-**--"
Returns: "JJHJJJHJHJJJHHJJJHHJSJJHJJHHJJHJSJJJJJHHJJS"
"--**-**-**--"
Returns: "SJJJS"
"-**-*-*-*-*-**--*-**-**-**--**-**-**--*-*--**-*-*-**-**-*-**-**-**-**-**-*-**-**-**--*-*-*-*-**-**--"
Returns: "JHHHHJJJJJSJJJJJJHHJJHJJJJJHJJJJHHHJJS"
"-*---*-*-**-**-*--*-*--**-**-*-**-*-**-**---**----*-**-*-*---**-**-*--*--**--*---*----*--*--**-**-**--*-**---------**-**-**--*-**-**-*-*--**---**-**--**-*--*-**-*-*-*--*--*--"
Returns: "JJHJJJHJJJHJHJJHJJHJHJSJJJJJJHJHJJJJJJJJJHJJJJJJHJJHJJSJJHJHHJJJ"
"-**--**-*-*-**-**--**-**--*---**-**-**-**---**--**-*-**--**--**---**-*-*--**-**--**-**--**-**-*-*-*-*-*-*--*-*-*-*-**-**--**-*-**-*-*-*---**---**-*-**-*-**-**-*-*--"
Returns: "JSJHHJJSJJJHJJJJHJSJHJSJSJHJHJJJSJJSJJHHHHHJHHHHJJSJHJHHJSJHJHJHJJHJ"
"-**--**--**--*--*-*-**-*-**-*-**-*-------*-*-**-*--*-**-*-**-*---*-**----*--**-**-**-**-**--"
Returns: "JSJSJJJHJHJHJJJHHHJJHJHJJJJJJJJJJJS"
"----**----*-*-**---**--*-**-*---*--**-*-**-**-*-*-**---**--*-**-*-*---**-**---**-*-*-*-**-**--**-**-*-**-*---**-**-**---*-**-*--"
Returns: "JJJHHJHJJJJJSJHJJHHJHJJJHJSJJHJHHHJJSJJHJJSJJJHHJJ"
"-*-**-*-**-**-*-*--*--**-**-*-*-**-*-**-**---*-**--*--**-*-*----**-*-**--**---*---*-**-*--*-**--**-**-*--*-*-**--*---**-**-*-*-----*-*-**-*-**-*-*-*---"
Returns: "HJHJJHJJJJHHJHJJHHJJSJHJHJHJSJHJJJJHJSJJJHHJJHJJHJJHHJHJHHJS"
"--*--**---*-**--**-*-*-*-*-**-**-**-**-**-**-**-**-**-*-**--**----*-**-*-*-*-**-*--*-*--**-**-*-**-**--****-**-*-*-----**-*-**-*--"
Returns: ""
"-*---**-*--**--*--*-**-**--*---*-*-**--*--*-----*--*--**---**-**-****-*-*-*-*-*-*-**---*-**-**-**-*-*-*-*--**-**-**-**--*--"
Returns: ""
"-**----*--**-**-**--**-*--****-**-*-**--"
Returns: ""
"-**----*--**-*****--**-*--*-**-**-*-**--"
Returns: ""
"-**----*--**-**-***-**-*--*-**-**-*-**--"
Returns: ""
"-**-**-*--**---*-*-**-*-*----**-*-**-**--**--*-*--*----**--**-**-**--**--*-*-*--**-**-**-**-*-**--**--**-**-**-*--"
Returns: "JJJJHHHJHJHJHJJSJJJJHJSJJJSJJHJJJJJHJSJSJJJJ"
"-**-*-**--*---**-*-*--*-**--**-*-*-*-*-**-**--*--**--**-**-*-**-**-*--*-*-**-**--"
Returns: "JHJJHJHJHJSJHHHHJJJSJSJJHJJJHHJJS"
"-***-**-**--"
Returns: ""
"-**-***--*-*-**-**--**-*--**-*----**--"
Returns: ""
"-**----*--*****-**--**-*--****-**-*-**--"
Returns: ""
"-**----*--*****-**--**-**-****-**-*-**--"
Returns: ""
"-**-*-*-*-**--*-**-*--**--**-*----*--*-*---**-*--*--*-*****-*-**-**-*--*--**-*-**-**--**--**--"
Returns: ""
"-**-**-**-**-----*-**-*-*----**-*-**-**--**--*-*--*----**--**-**-**--**--*-*-*--**-**-**-**-*-**--**--**-**-**-*--"
Returns: "JJJJJJJHJHJHJJSJJJJHJSJJJSJJHJJJJJHJSJSJJJJ"
"-*--**--**-*--*-**--*-**-*-**-*--**-*-*-**-**--*-*-**-*-*-**-**--**--**--*-*-*-**-**--*---**-**---*-**-**-**-*-*-*--**-*-**-**-**-**-*-**-**-**-"
Returns: "JJSJJHJJJHJJJHHJJJHJHHJJSJSJJHHJJJHJJHHJJJHHJJHJJJJHJJJ"
"---*-*---**-**-*-**-*--*-*--**--*--*--*----**-**-*--*-**-*-**-**--**----**-*-**--**--**--*----*--**-*--**-**-**--**-**-*-**-**--**-*-*-**---*-*-*-*-**-*-**---**--*-**-*--*-**-**--*--"
Returns: "HHJSJJHJJHJJJJJJJJJHJHJJSJJJHJSJSJJJJJJJJJSJJHJJSJHHJHHHHHJHJHJJJJHJJJS"
"---***-**-**-**-*--*-*--**-**-*-**-*-*-**-**-*--*--**-----*-*--**-**-**-**-**--**-**-*--**-**--**--*-*-*--**-*-**-**-**--**-**-*-**--*-**-*--"
Returns: ""
"-*--**--**-*--*-**--*-**-*-**-*--**-*-*-**-**--*-*-**-*-*-**-**--**--**--*-*-*-**-**--*---**-**---*-**-**-**-*-*-*--**-*-*****-**-**-*-**-**-**-"
Returns: ""
"--*-**-*-****-*-**-*-*-**--*-**----*-*-**-**--*-**-*---**-**-*-*---**-*-**-**-*-**-*-**-**---**--"
Returns: ""
"-*--**--**-*--*-**--*-**-*-**-*--**-*-*-**-**--*-*-**-*-*-**-**--**--**--*-*-*-**-**--*---**-**---*-**-**-**-*-*-*--**-*-**-**-**-**-*-**-*****-"
Returns: ""
"----*--*--**---**---**---**---**---**---**---**---**---**---**---**--*-**----**-----*--*--**---**---**---**---**---**---**---**---**---**---**---**--*-**----**-*-*-----*--*--**---**---**---**---**-"
Returns: "JJJJHJHJHJHJHJHJHJHJHJHJHJJJJJJJJSJHJHJHJHJHJHJHJHJHJHJHJJJJJHJJJJJHJHJHJHJ"