Я пытаюсь решить эту проблему кодовых войн:
Завершите скремблирование функции (str1, str2), которая возвращает true, если часть символов str1 может быть изменена для соответствия str2, в противном случае возвращает false.
примеры:
scramble('rkqodlw', 'world') ==> True
scramble('cedewaraaossoqqyt', 'codewars') ==> True
scramble('katas', 'steak') ==> False
Это моя попытка:
function scramble(str1, str2) {
let obj1 = {};
let obj2 = {};
for (el of str1) {
obj1[el] = (obj1[el] || 0) + 1;
}
for (el of str2) {
obj2[el] = (obj2[el] || 0) + 1;
}
for (el in obj2) {
if (!(el in obj1)) return false;
}
return true;
}
Я конвертирую строки в объекты, а затем сравниваю ключи друг с другом . Мой код проходит около 90% всех тестов в Codewars, но затем он не проходит остальные 10%, и они, к сожалению, не показывают, какие входные данные теста.
Я подозреваю, что есть несколько преимуществ случаи, когда этот код не улавливает. Любая помощь приветствуется.