Class Solution
java.lang.Object
g0701_0800.s0753_cracking_the_safe.Solution
753 - Cracking the Safe.<p>Hard</p>
<p>There is a safe protected by a password. The password is a sequence of <code>n</code> digits where each digit can be in the range <code>[0, k - 1]</code>.</p>
<p>The safe has a peculiar way of checking the password. When you enter in a sequence, it checks the <strong>most recent</strong> <code>n</code> <strong>digits</strong> that were entered each time you type a digit.</p>
<ul>
<li>For example, the correct password is <code>"345"</code> and you enter in <code>"012345"</code>:
<ul>
<li>After typing <code>0</code>, the most recent <code>3</code> digits is <code>"0"</code>, which is incorrect.</li>
<li>After typing <code>1</code>, the most recent <code>3</code> digits is <code>"01"</code>, which is incorrect.</li>
<li>After typing <code>2</code>, the most recent <code>3</code> digits is <code>"012"</code>, which is incorrect.</li>
<li>After typing <code>3</code>, the most recent <code>3</code> digits is <code>"123"</code>, which is incorrect.</li>
<li>After typing <code>4</code>, the most recent <code>3</code> digits is <code>"234"</code>, which is incorrect.</li>
<li>After typing <code>5</code>, the most recent <code>3</code> digits is <code>"345"</code>, which is correct and the safe unlocks.</li>
</ul>
</li>
</ul>
<p>Return <em>any string of <strong>minimum length</strong> that will unlock the safe <strong>at some point</strong> of entering it</em>.</p>
<p><strong>Example 1:</strong></p>
<p><strong>Input:</strong> n = 1, k = 2</p>
<p><strong>Output:</strong> “10”</p>
<p><strong>Explanation:</strong> The password is a single digit, so enter each digit. “01” would also unlock the safe.</p>
<p><strong>Example 2:</strong></p>
<p><strong>Input:</strong> n = 2, k = 2</p>
<p><strong>Output:</strong> “01100”</p>
<p><strong>Explanation:</strong> For each possible password:</p>
<ul>
<li>“00” is typed in starting from the 4<sup>th</sup> digit.</li>
<li>“01” is typed in starting from the 1<sup>st</sup> digit.</li>
<li>“10” is typed in starting from the 3<sup>rd</sup> digit.</li>
<li>“11” is typed in starting from the 2<sup>nd</sup> digit.</li>
</ul>
<p>Thus “01100” will unlock the safe. “01100”, “10011”, and “11001” would also unlock the safe.</p>
<p><strong>Constraints:</strong></p>
<ul>
<li><code>1 <= n <= 4</code></li>
<li><code>1 <= k <= 10</code></li>
<li><code>1 <= k<sup>n</sup> <= 4096</code></li>
</ul>
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
Solution
public Solution()
-
-
Method Details
-
crackSafe
-