Рубрики
Без рубрики

Решение: Определите, являются ли половины строки одинаковыми

Это является частью серии объяснений решений LeetCode (индекс). Если вам понравилось это решение или fou … с меткой алгоритмы, JavaScript, Java, Python.

Это является частью серии объяснений решения 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”