diff --git a/src/main/java/com/fishercoder/solutions/_5087.java b/src/main/java/com/fishercoder/solutions/_5087.java index 35fc1cddd0..f03b0e1440 100644 --- a/src/main/java/com/fishercoder/solutions/_5087.java +++ b/src/main/java/com/fishercoder/solutions/_5087.java @@ -1,10 +1,9 @@ package com.fishercoder.solutions; -import com.fishercoder.common.utils.CommonUtils; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.IntStream; /** * 5087. Letter Tile Possibilities @@ -34,7 +33,6 @@ public int numTilePossibilities(String tiles) { StringBuilder sb = new StringBuilder(); List result = new ArrayList<>(); dfs(chars, used, sb, result); - CommonUtils.print(result); return result.size(); } @@ -42,19 +40,16 @@ private void dfs(char[] chars, boolean[] used, StringBuilder sb, List re if (sb.length() != 0) { result.add(sb.toString()); } - for (int i = 0; i < chars.length; i++) { - if (used[i]) { - continue; - } - if (i > 0 && chars[i - 1] == chars[i] && !used[i - 1]) { - continue; - } - used[i] = true; - sb.append(chars[i]); - dfs(chars, used, sb, result); - used[i] = false; - sb.deleteCharAt(sb.length() - 1); - } + IntStream.range(0, chars.length) + .filter(i -> !used[i]) + .filter(i -> i <= 0 || chars[i - 1] != chars[i] || used[i - 1]) + .forEach(i -> { + used[i] = true; + sb.append(chars[i]); + dfs(chars, used, sb, result); + used[i] = false; + sb.deleteCharAt(sb.length() - 1); + }); } } }