Предмет: Информатика,
автор: naialol
Дана строка, содержащая латинские буквы и круглые скобки.
Если скобки расставлены правильно (то есть каждой открывающей соответствует одна закрывающая), то вывести число 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;
}
Похожие вопросы
Предмет: Русский язык,
автор: dimatyu2000
Предмет: Алгебра,
автор: sustention
Предмет: Математика,
автор: misterdoroshen
Предмет: Алгебра,
автор: Reqrse
Ввод Вывод
((())) 0
Ввод Вывод
())( 3