回答編集履歴

1

追記

2017/05/05 12:54

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -59,3 +59,45 @@
59
59
 
60
60
 
61
61
  で、この場合はStringクラスのメソッドindexOfを繰り返し使うのが正攻法です。
62
+
63
+
64
+
65
+ ---
66
+
67
+
68
+
69
+ 並び替えを考慮するのであれば、それぞれの文字の個数さえわかればいいので、
70
+
71
+ ```java
72
+
73
+ //"dog"に限らずいろいろ適用できるように、探す文字列も引数にとって書いてみる
74
+
75
+ static int count(String str, String target) {
76
+
77
+ Map<Character, Integer> charCount = new HashMap<>(),
78
+
79
+ targetCount = new HashMap<>();
80
+
81
+ for (char c : str.toCharArray()) {
82
+
83
+ charCount.marge(c, 1, Integer::sum);
84
+
85
+ }
86
+
87
+ for (char c : target.toCharArray()) {
88
+
89
+ targetCount.marge(c, 1, Integer::sum);
90
+
91
+ }
92
+
93
+ // strの中にtargetに使われている文字をそれぞれ何セット分取り出せるか計算し、その最小値をとる
94
+
95
+ return targetCount.entrySet().stream().mapToInt(e -> charCount.getOrDefault(e.getKey(), 0) / e.getValue()).min().getAsInt();
96
+
97
+ }
98
+
99
+ ```
100
+
101
+
102
+
103
+