Проблем с последната задача - Balanced Brackets, от Data types and variables, more exercises
Здравейте, някой дали може да види защо тест 2 не се получава при решението ми? Правих го по няколко начина и все 85 точки.
https://pastebin.com/Q3PQM3SP
Здравейте, някой дали може да види защо тест 2 не се получава при решението ми? Правих го по няколко начина и все 85 точки.
https://pastebin.com/Q3PQM3SP
Ето ви още едно решение с малко обяснения. Опитах се да го опростя максимално - кодът, не обяснението към него. :D
Имам булева, която първоначално е false - ей така, за всеки случай.
Броим отварящите скоби и броим затварящите. Като при всяко преброяване на затваряща, проверявам дали някъде преди нея е имало отваряща. Т.е. ако затварящите станат 1, трябва и отварящите преди това да са 1, за да е балансирано и тогава сетваме булевата на true. Ако отварящите преди това са били 2 или повече или изобщо е нямало и са си 0, тогава няма да се влезе в тази проверка. Ако обаче влезе в проверката значи са 1 на 1 и освен, че сетваме булевата на true, нулираме броячите, за да може следващия път да работят по същия начин. Щом в момента има баланс, реално няма значение колко точно са скобите общо досега, важно е какво става от тук натам.
Имам си и else проверка, защото ако се окаже, че при първа затваряща и съответно нулиране на броячите, булевата се е сетнала на true, а при втора затваряща условието за true вече не е изпълнено, булевата трябва пак да стане false. Тук също връщаме броячите на 0, за да не може да излезе, че е балансирано при ( ( ) ) .
Извън цикъла имам същата проверка - дали броят отварящи и затварящи скоби е равен, пак по същата логика - за да може ако веднъж е станало true, но повече не е влизало в горните проверки, а всъщност вече не е true, да се оправи. Например, ако след постигане на баланс веднъж, е имало още една отваряща скоба, без да има затваряща след нея (тогава изобщо не се стига до самите проверки вътре в цикъла).
И накрая според true или false, си принтирам резултата.
Супер, благодаря, макар че и аз вече бях решила задачата.