Перевернуть строки, содержащиеся в каждой паре совпадающих скобок, начиная с самой внутренней пары - C#

Узнай цену своей работы

Формулировка задачи:

Написал почти всё) Только вот думаю,как реализовать замену в самой исходной строки на найденные подстроки.
            string s = "abc(cba)ab(bac)c";
            string pattern = @"\W[a-z]*\W";
            Regex rgx = new Regex(pattern);
            Match match = rgx.Match(s);
            string temp = "";
 
            while (match.Success)
            {
                temp += match.Groups[0].Value;
                match = match.NextMatch();
            }
            
            char [] res = temp.Where(x=>Char.IsLetter(x)).ToArray();//найденные подстроки
            Array.Reverse(res);//ещё вот с реверсом не до конца всё учел :(
 
            char[] res_1 = s.ToArray();//исходная строка
 
            /*int t = 0;
            for (int i =0;i < res_1.Length;i++)
            {
                if (res_1[i] == '(')
                {
                }
            }
            */
            Console.Write(res_1);

            /*"abcabcabcabc"*/
Вот тест-кейсы: s = "a(bc)de" => "acbde" s = "co(de(fight)s)" =>"cosfighted"
-____-

Решение задачи: «Перевернуть строки, содержащиеся в каждой паре совпадающих скобок, начиная с самой внутренней пары»

textual
Листинг программы
string s = "co(de(fight)s)";
for(;;)
{
    string temp = Regex.Replace(s, @"\([^()]+\)", m => m.Value.Substring(1,m.Value.Length-2).Reverse());
    if (s == temp) break;
    s = temp;
}
Console.WriteLine(s);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.364 из 5
Похожие ответы