Подсчет количества скобок. Оптимизация
Есть ли более альтернативный вариант проверки на количество?
#include <iostream>
#include <vector>
bool IsCorrect(const char* text, const int length)
{
_STD vector<int> stack(0);
for (int index = 0; index < length; index++)
{
if (text[index] == '[')
stack.push_back(1);
else if (text[index] == ']')
if (!stack.empty())
stack.pop_back();
else
return false;
}
return stack.empty();
}
int main(void)
{
char text[] = "[Hello [[world]]]awdad";
bool result = IsCorrect(text, strlen(text) - 1);
_STD cout << (result ? "True" : "False") << _STD endl; // out True
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Эникейщик
→ Ссылка
Есть, конечно, более альтернативный вариант.
- Вычислять длину текста в самой функции
IsCorrect. - Использовать не вектор, а банальный
int. +1 на открывающую скобку, -1 на закрывающую.