Однажды ковбой Джо нанялся в помощники шерифу. Шериф выдал ковбою Джо строку s и попросил собрать из её букв как можно больше слов sheriff. Каждая буква может использоваться не более одного раза. Ковбой Джо тут же приступил к заданию шерифа, но к сожалению, он не умеет читать. Помогите ковбою Джо.
Формат входных данных: Дана строка s (1 ≤ s ≤ 200000) состоящая из маленьких букв латинского алфавита.
Формат выходных данных: Выведите максимальное количество слов sheriff, которое можно собрать из букв строки s. Реализуй, пожалуйста, решение на языке javascript
javascript
let count = {};
Затем мы пройдемся по строке s и будем увеличивать соответствующее количество в объекте count:
javascript
for (let i = 0; i < s.length; i++) {
let letter = s[i];
count[letter] = (count[letter] || 0) + 1;
}
Затем мы создадим переменную maxWords, в которой будем хранить максимальное количество собранных слов "sheriff". Изначально она равна бесконечности:
javascript
let maxWords = Infinity;
Затем мы пройдемся по строке "sheriff" и будем уменьшать соответствующее количество в объекте count. Если в какой-то момент у нас закончатся буквы, то мы остановимся, так как нам не хватит букв для собрания еще одного слова "sheriff":
javascript
for (let i = 0; i < "sheriff".length; i++) {
let letter = "sheriff"[i];
if (count[letter] && count[letter] > 0) {
count[letter]--;
} else {
maxWords = i;
break;
}
}
Наконец, мы вернем maxWords:
javascript
return maxWords;
Полный код решения выглядит следующим образом:
javascript
function countSheriffWords(s) {
let count = {};
for (let i = 0; i < s.length; i++) {
let letter = s[i];
count[letter] = (count[letter] || 0) + 1;
}
let maxWords = Infinity;
for (let i = 0; i < "sheriff".length; i++) {
let letter = "sheriff"[i];
if (count[letter] && count[letter] > 0) {
count[letter]--;
} else {
maxWords = i;
break;
}
}
return maxWords;
}
Тестирование решения:
javascript
console.log(countSheriffWords("shrfsheiff"));
// Вывод: 2
console.log(countSheriffWords("sheriffsheriff"));
// Вывод: 6
console.log(countSheriffWords("ffsheriffshe"));
// Вывод: 0
В первом тесте можно собрать 2 слова "sheriff" (одно из первых 6 букв и одно из последних 6 букв). Во втором тесте можно собрать оба слова "sheriff". В третьем тесте ни одно слово "sheriff" нельзя собрать из букв строки s.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет