Ransom Note 赎金条
赎金字符串的内容包含在杂志字符串中,赎金字符串中每个字符出现的次数小于对应的杂志字符串中每个字符串出现的次数。
思路:建立两个map,统计每个字符串中每个字符出现的次数。
public static void main(String[] args) {
String ransomNote="a";
String magazine="b";
// String ransomNote="aa";
// String magazine="ba";
// String ransomNote="aa";
// String magazine="aab";
boolean b = canConstruct(ransomNote, magazine);
System.out.println(b);
}
public static boolean canConstruct(String ransomNote, String magazine) {
Map<Character, Integer> characterIntegerMap = changeCanConstructChangeMap(ransomNote);
Map<Character, Integer> characterIntegerMap2 = changeCanConstructChangeMap(magazine);
System.out.println(characterIntegerMap);
System.out.println(characterIntegerMap2);
for (Character character : characterIntegerMap.keySet()) {
if(!characterIntegerMap2.containsKey(character)){
return false;
}else{
Integer integer = characterIntegerMap.get(character);
Integer integer2 = characterIntegerMap2.get(character);
if(integer>integer2){
return false;
}
}
}
return true;
}
public static Map<Character,Integer> changeCanConstructChangeMap(String ransomNote){
Map<Character,Integer> map=new HashMap<>();
for(int i=0;i<ransomNote.length();i++){
char c = ransomNote.charAt(i);
if(map.containsKey(c)){
map.put(c,map.get(c)+1);
}else{
map.put(c,1);
}
}
return map;
}