Мне нужно создать функцию, используя pop() и push(), чтобы проверить правильность порядка круглых и квадратных скобок, например, "( ( [ [ ] ] ) )" правильно, а "( ( ( [ ] ] ) ) )" нет.
Моя идея заключалась в том, чтобы сделать цикл и для каждой итерации получить символ из строки и проверить, является ли это открытием (скобка или круглые скобки), а затем нажать его, если это закрытие, затем проверьте, является ли top() из стека открытием того же типа, если нет, то верните false, если это так, то pop() и продолжите цикл, пока строка не закончится.
Проблема в том, что я не знаю, почему мой код не работает.
Заранее спасибо!
#include
#include
using namespace std;
bool checkExpress(string str){
int i;
stack st;
if(str.length() % 2 != 0) return false;
for(i=0; i < str.length(); i++){
if(str == '(' || str == '[') st.push(str);
else if(str == ')' || str == ']'){
if(str == ']' && st.top() != '[') return false;
else if(str == ')' && st.top() != '(') return false;
}
st.pop();
}
return true;
}
int main(){
string a = "(([[]]))";
if(checkExpress(a)) cout
Подробнее здесь: https://stackoverflow.com/questions/664 ... is-correct
C++: проверка правильности порядка круглых и квадратных скобок в строке с использованием стеков ⇐ C++
Программы на C++. Форум разработчиков
1760717947
Anonymous
Мне нужно создать функцию, используя pop() и push(), чтобы проверить правильность порядка круглых и квадратных скобок, например, "( ( [ [ ] ] ) )" правильно, а "( ( ( [ ] ] ) ) )" нет.
Моя идея заключалась в том, чтобы сделать цикл и для каждой итерации получить символ из строки и проверить, является ли это открытием (скобка или круглые скобки), а затем нажать его, если это закрытие, затем проверьте, является ли top() из стека открытием того же типа, если нет, то верните false, если это так, то pop() и продолжите цикл, пока строка не закончится.
Проблема в том, что я не знаю, почему мой код не работает.
Заранее спасибо!
#include
#include
using namespace std;
bool checkExpress(string str){
int i;
stack st;
if(str.length() % 2 != 0) return false;
for(i=0; i < str.length(); i++){
if(str[i] == '(' || str[i] == '[') st.push(str[i]);
else if(str[i] == ')' || str[i] == ']'){
if(str[i] == ']' && st.top() != '[') return false;
else if(str[i] == ')' && st.top() != '(') return false;
}
st.pop();
}
return true;
}
int main(){
string a = "(([[]]))";
if(checkExpress(a)) cout
Подробнее здесь: [url]https://stackoverflow.com/questions/66476604/c-checking-if-the-order-of-parentheses-and-brackets-from-a-string-is-correct[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия