Я пытаюсь написать функцию, которая принимает две строки и возвращает, имеют ли они одинаковую частоту букв. Предполагается, что ни одна строка не является нулевой.
Вот моя реализация Java:
public void addToMap(HashMap<String, Integer> map, String s){
if(map.get(s) == null){
map.put(s, 1);
} else{
map.put(s, map.get(s)+1);
}
}
public boolean perm(String a, String b){
if(a.length() != b.length()){
return false;
}
HashMap<String, Integer> aMap = new HashMap<>();
HashMap<String, Integer> bMap = new HashMap<>();
for(int i = 0; i < a.length(); i++){
addToMap(aMap, a.substring(i,i+1));
addToMap(bMap, b.substring(i,i+1));
}
return aMap.equals(bMap);
}
Я пытаюсь повторить это в JavaScript:
const addToMap = (map, s) => {
if(map[s] == null){
map[s] = 1;
} else{
map[s] = map[s]+1;
}
}
const perm = (a,b) => {
if(a.length != b.length){
return false;
}
let aMap = new Map();
let bMap = new Map();
for(let i = 0; i < a.length; i++){
addToMap(aMap, a.substring(i,i+1));
addToMap(bMap, b.substring(i,i+1));
}
return aMap === bMap;
}
Я протестировал perm ("abca", "bcaa") для обеих реализаций. Код Java возвращает true, что является правильным. Однако функции JS возвращают false.
Есть ли способ вернуть, что две карты равны в JS, если они имеют одинаковые ключи и значения, но в другом порядке?