mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-11 02:58:13 +08:00
42 lines
2.7 KiB
HTML
42 lines
2.7 KiB
HTML
<p>In the video game Fallout 4, the quest <strong>"Road to Freedom"</strong> requires players to reach a metal dial called the <strong>"Freedom Trail Ring"</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>"12:00"</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>"12:00"</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>'s characters at the <code>"12:00"</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>"12:00"</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> </p>
|
|
<p><strong class="example">Example 1:</strong></p>
|
|
<img src="https://assets.leetcode.com/uploads/2018/10/22/ring.jpg" style="width: 450px; height: 450px;" />
|
|
<pre>
|
|
<strong>Input:</strong> ring = "godding", key = "gd"
|
|
<strong>Output:</strong> 4
|
|
<strong>Explanation:</strong>
|
|
For the first key character 'g', since it is already in place, we just need 1 step to spell this character.
|
|
For the second key character 'd', we need to rotate the ring "godding" anticlockwise by two steps to make it become "ddinggo".
|
|
Also, we need 1 more step for spelling.
|
|
So the final output is 4.
|
|
</pre>
|
|
|
|
<p><strong class="example">Example 2:</strong></p>
|
|
|
|
<pre>
|
|
<strong>Input:</strong> ring = "godding", key = "godding"
|
|
<strong>Output:</strong> 13
|
|
</pre>
|
|
|
|
<p> </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>
|