Перевернуть строки, содержащиеся в каждой паре совпадающих скобок, начиная с самой внутренней пары - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д