Дана строка, содержащая латинские буквы и круглые скобки.
Если скобки расставлены правильно (то есть каждой открывающей соответствует одна закрывающая), то вывести число 0.
В противном случае вывести или номер позиции, в которой расположена первая ошибочная закрывающая скобка, или, если закрывающих скобок не хватает, число –1. Нумерация позиций символов начинается с 1.
с помощью c++
Ответы
Ответ дал:
1
Ответ:
#include <iostream>
using namespace std;
int main() {
string str;
cin >> str;
int count = 0, last_open = 0;
char open = '(', closed = ')';
for (int i = 0; i < str.size() and count >= 0; ++i){
if (str[i] == open){
++count;
last_open = i + 1;
}
else if (str[i] == closed)
--count;
}
if (count < 0)
cout << -1;
else if (count > 0)
cout << last_open;
else
cout << 0;
return 0;
}
using namespace std;
int main() {
string str;
cin >> str;
int count = 0, last_closed = 0;
char open = '(', closed = ')';
for (int i = 0; i < str.size() and count >= 0; ++i){
if (str[i] == open){
++count;
}
else if (str[i] == closed){
--count;
last_closed = i + 1;
}
}
if (count < 0)
cout << last_closed;
else if (count > 0)
cout << -1;
else
cout << 0;
return 0;
}
Похожие вопросы
1 год назад
1 год назад
2 года назад
2 года назад
7 лет назад
7 лет назад
9 лет назад
Ввод Вывод
((())) 0
Ввод Вывод
())( 3