Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit e45fca0

Browse files
refactor 5087
1 parent 0644f0c commit e45fca0

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

src/main/java/com/fishercoder/solutions/_5087.java

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package com.fishercoder.solutions;
22

3-
import com.fishercoder.common.utils.CommonUtils;
4-
53
import java.util.ArrayList;
64
import java.util.Arrays;
75
import java.util.List;
6+
import java.util.stream.IntStream;
87

98
/**
109
* 5087. Letter Tile Possibilities
@@ -34,27 +33,23 @@ public int numTilePossibilities(String tiles) {
3433
StringBuilder sb = new StringBuilder();
3534
List<String> result = new ArrayList<>();
3635
dfs(chars, used, sb, result);
37-
CommonUtils.print(result);
3836
return result.size();
3937
}
4038

4139
private void dfs(char[] chars, boolean[] used, StringBuilder sb, List<String> result) {
4240
if (sb.length() != 0) {
4341
result.add(sb.toString());
4442
}
45-
for (int i = 0; i < chars.length; i++) {
46-
if (used[i]) {
47-
continue;
48-
}
49-
if (i > 0 && chars[i - 1] == chars[i] && !used[i - 1]) {
50-
continue;
51-
}
52-
used[i] = true;
53-
sb.append(chars[i]);
54-
dfs(chars, used, sb, result);
55-
used[i] = false;
56-
sb.deleteCharAt(sb.length() - 1);
57-
}
43+
IntStream.range(0, chars.length)
44+
.filter(i -> !used[i])
45+
.filter(i -> i <= 0 || chars[i - 1] != chars[i] || used[i - 1])
46+
.forEach(i -> {
47+
used[i] = true;
48+
sb.append(chars[i]);
49+
dfs(chars, used, sb, result);
50+
used[i] = false;
51+
sb.deleteCharAt(sb.length() - 1);
52+
});
5853
}
5954
}
6055
}

0 commit comments

Comments
 (0)