回答編集履歴
1
追記
answer
CHANGED
@@ -28,4 +28,24 @@
|
|
28
28
|
}
|
29
29
|
```
|
30
30
|
|
31
|
-
で、この場合はStringクラスのメソッドindexOfを繰り返し使うのが正攻法です。
|
31
|
+
で、この場合はStringクラスのメソッドindexOfを繰り返し使うのが正攻法です。
|
32
|
+
|
33
|
+
---
|
34
|
+
|
35
|
+
並び替えを考慮するのであれば、それぞれの文字の個数さえわかればいいので、
|
36
|
+
```java
|
37
|
+
//"dog"に限らずいろいろ適用できるように、探す文字列も引数にとって書いてみる
|
38
|
+
static int count(String str, String target) {
|
39
|
+
Map<Character, Integer> charCount = new HashMap<>(),
|
40
|
+
targetCount = new HashMap<>();
|
41
|
+
for (char c : str.toCharArray()) {
|
42
|
+
charCount.marge(c, 1, Integer::sum);
|
43
|
+
}
|
44
|
+
for (char c : target.toCharArray()) {
|
45
|
+
targetCount.marge(c, 1, Integer::sum);
|
46
|
+
}
|
47
|
+
// strの中にtargetに使われている文字をそれぞれ何セット分取り出せるか計算し、その最小値をとる
|
48
|
+
return targetCount.entrySet().stream().mapToInt(e -> charCount.getOrDefault(e.getKey(), 0) / e.getValue()).min().getAsInt();
|
49
|
+
}
|
50
|
+
```
|
51
|
+
|