为什么记录这个呢?因为自己想了个很爽的方法😊:
class Solution { int res = 0; private void dfs(int n, int[]nums, boolean[]sign, String s){ if(s.length() == n){ res++; return; } for(int i=0; i<10; i++){ if(sign[i]){ continue; } if(s.length() == 0 && nums[i] == 0){ continue; } sign[i] = true; s += ""+nums[i]; dfs(n, nums, sign, s); sign[i] = false; s = s.substring(0, s.length()-1); } } public int countNumbersWithUniqueDigits(int n) { int nums[] = new int[10]; for(int i=0; i<10; i++){ nums[i] = i; } boolean sign[] = new boolean[10]; for(int i=0; i<=n; i++){ dfs(i, nums, sign, ""); } return res; } public static void main(String[] args) { Solution s = new Solution(); s.countNumbersWithUniqueDigits(3); } }
