lifeiteng

753. Cracking the Safe

Sep 12th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.91 KB | None | 0 0
  1. class Solution {
  2.     public String crackSafe(int n, int k) {
  3.         StringBuilder sb = new StringBuilder();
  4.         for(int i = 0; i < n; i++) sb.append("0");
  5.         set.add(sb.toString());
  6.         dfs(n, k, sb);
  7.         return str;
  8.     }
  9.    
  10.     boolean dfs(int n, int k, StringBuilder sb)
  11.     {
  12.         if(set.size() == (int) Math.pow(k, n))
  13.         {
  14.             str = sb.toString();
  15.             return true;
  16.         }
  17.         int len = sb.length();
  18.         String sub = sb.substring(len - n + 1);
  19.         for(int i = 0; i < k; i++)
  20.         {
  21.             String next = sub + i;
  22.             if(set.contains(next)) continue;
  23.             sb.append(i);
  24.             set.add(next);
  25.             if(dfs(n, k, sb)) return true;
  26.             sb.deleteCharAt(len);
  27.             set.remove(next);
  28.         }
  29.         return false;
  30.     }
  31.    
  32.     String str = "";
  33.    
  34.     Set<String> set = new HashSet<>();
  35. }
Add Comment
Please, Sign In to add comment