Удалить подстроку c#

98
20 января 2021, 09:00

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

public static void DelSubStr(ref string s)
{
    int count = 1;
    foreach (string ch in s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
    {
        if (count == 1)
        {
            s = s.Remove(0, s.Length);
        }
        if (count % 2 == 0)
        {
            s += ReverseString(ch);
            s += " ";
        }
        count++;
    }
}
public static string ReverseString (string s)
{
    char[] arr = s.ToCharArray();
    Array.Reverse(arr);
    return new string(arr);
}

Препод сказал сделать тоже самое, только без использования подстроки. Как это можно сделать, подскажите пожалуйста)

Answer 1

Ну, например, вот так

public static string DelSubStr(string s)
{
    var sb = new StringBuilder();
    var stack = new Stack<char>();
    var curr = 0;
    while (curr < s.Length)
    {           
        while (curr < s.Length && s[curr] == ' ') curr++;
        while (curr < s.Length && s[curr] != ' ') curr++;
        while (curr < s.Length && s[curr] == ' ') curr++; 
        while (curr < s.Length && s[curr] != ' ')
        {
            stack.Push(s[curr]);
            curr++;
        }
        if (stack.Count > 0 && sb.Length > 0) sb.Append(' ');
        while (stack.Count > 0) sb.Append(stack.Pop());
    }
    return sb.ToString();
}

Проверка

Console.WriteLine(DelSubStr("   nechotnoe  chotnoe   nechotnoe    chotnoe   "));

Ожидаемо выводит

eontohc eontohc
Answer 2

Даешь linq-однострочник

public static string DelSubStr(string s)
{
    return string.Join(" ", s.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries)
            .Where((x, i) => i % 2 == 0)
            .Select(x => new string(x.Reverse().ToArray())));
}

Проверка

Console.WriteLine(DelSubStr("    nechotnoe     chotnoe     nechotnoe   chotnoe   "));

Результат

eontohc eontohc
READ ALSO
Как сделать выборку MySQL чтобы значения в колонке содержали значения из списка

Как сделать выборку MySQL чтобы значения в колонке содержали значения из списка

Есть 2 таблицы, из одной я могу выбрать список нужных мне id:

110
Изменение значения в элемента в массиве

Изменение значения в элемента в массиве

Подскажите пожалуйста, есть код, в этом коде, происходит разложение текста в массив, после чего идет проверка текста с изменением его согласно...

126
Не могу изменить несколько записей из БД

Не могу изменить несколько записей из БД

Есть таблица Фильмов,Актеров и таблица соединяющая ид фильма и ид актераЕсть разметка

124
Почему заказ придет без товара?

Почему заказ придет без товара?

всем доброго времени суток

133