Не удается верно указать индексы дублирующихся символов в строке

85
07 апреля 2021, 15:20

Необходимо вывести индексы начала и конца последовательности дублирующихся гласных символов.

Входные данные:

abc aabc aaabc bcaaaa

Выходные:

4 5, 9 11, 17 20

Мой код:

string vowels = "eyuioa";
string str = "abc aabc aaabc bcaaaa";
int endInd = 0;
for (int i = 0; i < str.Length-1; i++)
{
    if (vowels.Contains(str[i]))
    {
        endInd = i;
        while (vowels.Contains(str[endInd]) && endInd + 1 < str.Length)
        {
            endInd++;
        }
        Console.WriteLine($"{i} {endInd}\n");
        i = endInd;
    }
}
Answer 1

В цикле будем проверять что следующий (а не текущий) элемент — гласная. Делать это будем после проверки индекса, чтобы не получить исключение:

while (endInd + 1 < str.Length && vowels.Contains(str[endInd+1]))

Также не будем ничего выводить, если найдена последовательность из одной гласной:

if (endInd>i) Console.WriteLine($"{i} {endInd}\n");

Вроде больше ошибок не нашел и должно работать.

Такого же результата можно добиться регулярным выражением:

foreach (Match match in Regex.Matches(str, "[eyuioa]{2,}"))
{
    Console.WriteLine($"{match.Index} {match.Index+match.Length-1}");
}
READ ALSO
Корзина покупок в ASP.NET Core

Корзина покупок в ASP.NET Core

Изучаю ASPNet Core и никак не могу найти, как правильно реализовать корзину с помощью этой технологии

87
C# запись в ACC, минуя Wav

C# запись в ACC, минуя Wav

Нужно каким то образом записать звук с микрофона, и сохранить это в формате ACCЕсть NAudio, но там сначала пишется в Wav, и только потом можно конвертнуть

98
Запрос с несколькими COUNT

Запрос с несколькими COUNT

Я не специалист по БДМой уровень это простые запросы

110
Как создать запрос MySQL &ldquo;ALTER TABLE много мерный&rdquo;?

Как создать запрос MySQL “ALTER TABLE много мерный”?

Нужно в БД таблицы поменять в нескольких местах датуЗапрос сделал, все работает

119