C#

Задача по C#

Прочитать с клавиатуры строку символов. Посчитать в ней отдельно символы '(' и ')'. В случае
неодинаковости количества повторений добавить нужный для равенства символ, повторив его нужное
для равенства количество раз, причем если добавлять надо '(', то сделать это в начале, а если ')',
то в конце.
 var str = Console.ReadLine();
int balance = 0;
foreach (var ch in str) {
if (ch == '(') { ++balance; }
if (ch == ')') { --balance; }
}
for (; balance < 0; ++balance) { str = '(' + str; }
for (; balance > 0; --balance) { str = str + ')'; }
Console.WriteLine(str);
Александр Вахромов
Александр Вахромов
58 462
Лучший ответ
Вот пример решения на C#:


Скопировать код
string input = Console.ReadLine();
int openCount = 0;
int closeCount = 0;
foreach (char c in input)
{
if (c == '(')
{
openCount++;
}
else if (c == ')')
{
closeCount++;
}
}
int countToAdd = Math.Abs(openCount - closeCount);
string result = input;
if (openCount < closeCount)
{
for (int i = 0; i < countToAdd; i++)
{
result = '(' + result;
}
}
else if (openCount > closeCount)
{
for (int i = 0; i < countToAdd; i++)
{
result = result + ')';
}
}
Console.WriteLine(result);
Это решение сначала подсчитывает количество символов '(' и ')' во входной строке. Затем он вычисляет разницу между двумя значениями. Если количество '(' меньше, чем количество ')', он добавляет необходимое количество '(' в начало входной строки. Если количество ')' меньше, чем количество '(' , он добавляет необходимое количество ')' в конец входной строки. Наконец, он печатает измененную строку.