Привет, у меня есть строковый массив, который содержит значения как «{[()]}", "} [] {", "{() []". Теперь мне нужно сбалансировать фигурные скобки, например, для каждой начальной фигурной скобки, например. {или [или (должна быть закрывающая скобка). Если входная строка имеет одинаковое количество открывающих и закрывающих фигурных скобок, тогда выход «ДА» еще «НЕТ». Также, если строка имеет закрывающую фигуру перед Соответствующая открывающая скобка, а также выход будет «НЕТ». Таким образом, в основном вывод должен быть строковым массивом, который будет содержать такие значения, как это для вышеупомянутого массива входных строк: «ДА», «НЕТ», «НЕТ».Программа для балансировки фигурных скобок
я написал следующую программу, которая имеет много если-то еще условие. Мне было интересно, если есть лучший способ в C# для решения этой проблемы.
static void Main(string[] args)
{
string[] arrBraces = Console.ReadLine().Split(' ');
string[] result = new String[arrBraces.Length];
for (int i = 0; i < arrBraces.Length; i++) {
Console.WriteLine(arrBraces[i]);
int curly = 0, square = 0, round = 0;
foreach (char c in arrBraces[i]) {
if (c == '{') {
curly++;
} else if (c == '[') {
square++;
} else if (c == '(') {
round++;
} else if (c == '}') {
if (curly > 0) {
curly--;
} else {
curly = -1;
break;
}
} else if (c == ']') {
if (square > 0) {
square--;
} else {
square = -1;
break;
}
} else if (c == ')') {
if (round > 0) {
round--;
} else {
round = -1;
break;
}
}
}
if (curly == 0 && square == 0 && round == 0) {
result[i] = "YES";
} else {
result[i] = "NO";
}
}
foreach (string str in result) {
Console.WriteLine (str);
}
Console.ReadKey();
}
Я нашел подобный вопрос here но, кажется, подобно тому, как это делает то же самое, просто это использует стек для хранения скобок, тогда как моя проблема явно указывает, что фигурные скобки находятся в массиве строк.
В любом случае любая помощь или предложения по улучшению кода будут оценены.
Если требовалось только балансировать количество открывающих и закрывающих брекетов, то первое решение Joel Coehoom было правильным. Я неверно истолковал ваше требование. В основном этот алгоритм будет работать для сценария, где вы также должны учитывать открытую симметрию. –