Это является частью серии объяснений решения LeetCode ( index ). Если вам понравилось это решение или нашли его полезным, Пожалуйста, нравится Этот пост и/или upvote Мое решение по сообщению на форумах LeetCode Анкет
Задача leetcode #1704 (легко): определить, одинаковы, похожи ли половины строк
Описание:
( прыгнуть в : Идея решения Код : JavaScript | Python |. Java |. C ++
Вам дают строку S
даже длины. Разделите эту строку на две половины равных длины, и пусть А
быть первой половиной и b
быть второй половиной.
Две строки одинаково Если у них такое же количество гласных ( 'a', 'e', 'i', 'o', 'u', 'a', 'e', 'i', 'o', 'u'
). Обратите внимание, что S
содержит прописные и строчные буквы.
Возврат истинный
Если А
и b
являются похоже на Анкет В противном случае, возвращайте ложный
Анкет
Примеры:
Вход: | |
Выход: | истинный |
Объяснение: |
Вход: | |
Выход: | ЛОЖЬ |
Объяснение: |
Вход: | |
Выход: | ЛОЖЬ |
Вход: | |
Выход: | истинный |
Ограничения:
2. длиной
S.Length
даже.S
состоит из прописное и нижнее регистр письма.
Идея:
( Прыгните к : Описание задачи Код : JavaScript | Python |. Java |. C ++
Эта проблема довольно проста. Первая проблема заключается в том, чтобы идентифицировать гласные. Очевидно, есть много способов сделать это, но это похоже на хорошее место, чтобы использовать какую -то структуру данных по поиску гласных ( гласные ). В зависимости от языка, это может быть строка, словарь, карта, набор и т. Д.
Тогда нам просто нужно сохранить счетчик баланса ( ans ) и переключить через обе половины входной строки ( s ) и приращение Анс Всякий раз, когда у первой половины есть гласный и уменьшение Анс Всякий раз, когда у второй половины есть гласный.
Как только мы закончим, мы можем просто вернуть ANS Чтобы определить, сбалансированы ли две половинки строки.
Код JavaScript:
( Прыгните к : Описание задачи Идея решения
const vowels = "aeiouAEIOU" var halvesAreAlike = function(S) { let mid = S.length / 2, ans = 0 for (let i = 0, j = mid; i < mid; i++, j++) ans += vowels.includes(S.charAt(i)) - vowels.includes(S.charAt(j)) return ans === 0 };
Код Python:
( Прыгните к : Описание задачи Идея решения
vowels = "aeiouAEIOU" class Solution: def halvesAreAlike(self, S: str) -> bool: mid, ans = len(S) // 2, 0 for i in range(mid): if S[i] in vowels: ans += 1 if S[mid+i] in vowels: ans -=1 return ans == 0
Код Java:
( Прыгните к : Описание задачи Идея решения
class Solution { String vowels = "aeiouAEIOU"; public boolean halvesAreAlike(String S) { int mid = S.length() / 2, ans = 0; for (int i = 0, j = mid; i < mid; i++, j++) { if (vowels.indexOf(S.charAt(i)) >= 0) ans++; if (vowels.indexOf(S.charAt(j)) >= 0) ans--; } return ans == 0; } }
C ++ Код:
( Прыгните к : Описание задачи Идея решения
string vowels = "aeiouAEIOU"; class Solution { public: bool halvesAreAlike(string S) { int mid = S.size() / 2, ans = 0; for (int i = 0, j = mid; i < mid; i++, j++) { if (~vowels.find(S[i])) ans++; if (~vowels.find(S[j])) ans--; } return ans == 0; } };
Оригинал: “https://dev.to/seanpgallivan/solution-determine-if-string-halves-are-alike-pid”