Class Solution

java.lang.Object
g0501_0600.s0514_freedom_trail.Solution

public class Solution extends Object
514 - Freedom Trail.<p>Hard</p> <p>In the video game Fallout 4, the quest <strong>&ldquo;Road to Freedom&rdquo;</strong> requires players to reach a metal dial called the <strong>&ldquo;Freedom Trail Ring&rdquo;</strong> and use the dial to spell a specific keyword to open the door.</p> <p>Given a string <code>ring</code> that represents the code engraved on the outer ring and another string <code>key</code> that represents the keyword that needs to be spelled, return <em>the minimum number of steps to spell all the characters in the keyword</em>.</p> <p>Initially, the first character of the ring is aligned at the <code>&quot;12:00&quot;</code> direction. You should spell all the characters in <code>key</code> one by one by rotating <code>ring</code> clockwise or anticlockwise to make each character of the string key aligned at the <code>&quot;12:00&quot;</code> direction and then by pressing the center button.</p> <p>At the stage of rotating the ring to spell the key character <code>key[i]</code>:</p> <ol> <li>You can rotate the ring clockwise or anticlockwise by one place, which counts as <strong>one step</strong>. The final purpose of the rotation is to align one of <code>ring</code>&rsquo;s characters at the <code>&quot;12:00&quot;</code> direction, where this character must equal <code>key[i]</code>.</li> <li>If the character <code>key[i]</code> has been aligned at the <code>&quot;12:00&quot;</code> direction, press the center button to spell, which also counts as <strong>one step</strong>. After the pressing, you could begin to spell the next character in the key (next stage). Otherwise, you have finished all the spelling.</li> </ol> <p><strong>Example 1:</strong></p> <p><img src="https://assets.leetcode.com/uploads/2018/10/22/ring.jpg" alt="" /></p> <p><strong>Input:</strong> ring = &ldquo;godding&rdquo;, key = &ldquo;gd&rdquo;</p> <p><strong>Output:</strong> 4</p> <p><strong>Explanation:</strong> For the first key character &lsquo;g&rsquo;, since it is already in place, we just need 1 step to spell this character. For the second key character &lsquo;d&rsquo;, we need to rotate the ring &ldquo;godding&rdquo; anticlockwise by two steps to make it become &ldquo;ddinggo&rdquo;. Also, we need 1 more step for spelling. So the final output is 4.</p> <p><strong>Example 2:</strong></p> <p><strong>Input:</strong> ring = &ldquo;godding&rdquo;, key = &ldquo;godding&rdquo;</p> <p><strong>Output:</strong> 13</p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= ring.length, key.length <= 100</code></li> <li><code>ring</code> and <code>key</code> consist of only lower case English letters.</li> <li>It is guaranteed that <code>key</code> could always be spelled by rotating <code>ring</code>.</li> </ul>
  • Constructor Details

    • Solution

      public Solution()
  • Method Details

    • findRotateSteps

      public int findRotateSteps(String ring, String key)