方法:计数
class Solution {
public int rearrangeCharacters(String s, String target) {
Map<Character, Integer> tMap = new HashMap<>();
for (char ch : target.toCharArray()) {
tMap.put(ch, tMap.getOrDefault(ch, 0) + 1);
}
Map<Character, Integer> sMap = new HashMap<>();
for (char ch : s.toCharArray()) {
sMap.put(ch, sMap.getOrDefault(ch, 0) + 1);
}
int ans = 0;
boolean flag = true;
while (flag) {
for (char ch : tMap.keySet()) {
if (sMap.get(ch) != null && sMap.get(ch) >= tMap.get(ch)) {
sMap.put(ch, sMap.get(ch) - tMap.get(ch));
} else {
flag = false;
break;
}
}
if (flag) ans++;
}
return ans;
}
}
class Solution {
public int rearrangeCharacters(String s, String target) {
int[] count1 = new int[26];
int[] count2 = new int[26];
int ans = Integer.MAX_VALUE;
for (char ch : s.toCharArray()) {
count1[ch - 'a']++;
}
for (char ch : target.toCharArray()) {
count2[ch - 'a']++;
}
for (char ch : target.toCharArray()) {
ans = Math.min(ans, count1[ch - 'a'] / count2[ch - 'a']);
}
return ans;
}
}