题目描述
给你两个下标从 0 开始的字符串 s 和 target 。你可以从 s 取出一些字符并将其重排,得到若干新的字符串。
从 s 中取出字符并重新排列,返回可以形成 target 的 最大 副本数。
Coding
class Solution {
int min=Integer.MAX_VALUE;
public int rearrangeCharacters(String s, String target) {
var h=new HashMap<Character,Integer>(); //后面的部分是必须要写的
var match=new HashMap<Character,Integer>();
for(int i=0;i<target.length();i++){
char key=target.charAt(i);
h.put(key,h.getOrDefault(key,0)+1);
}
for(int i=0;i<s.length();i++){
char key=s.charAt(i);
match.put(key,match.getOrDefault(key,0)+1);
}
for(var en: h.entrySet()){
var k=en.getKey();
if(match.containsKey(k)){
var num=match.get(k);
min=Integer.min(num/en.getValue(),min);
}
else return 0;
}
return min;
}
}