Poprawność rozmieszczonych nawiasów
Napiszemy funkcję sprawdzającą poprawność rozmieszczonych nawiasów w stringu. Będziemy sprawdzać ciąg pod kątem zrównoważonego nawiasu, czyli czy wszystkie nawiasy otwierające mają nawias zamykający i czy są one logicznie umieszczone w ciągu. Takie sprawdzanie może służyć do sprawdzania plików xml, json itp…
Poprawne rozmieszczenie nawiasów
np. ( ) (( )) [] {} <> [<({})>] [[]] (((())))
Niepoprawne rozmieszczenie:
np. )
(
><
())[] ((( )) ( ) ( ) (( )) ( ) ) (
przykładowe rozwiązanie:
Użyjemy Stosu podczas iteracji przez każdy znak ciągu wejściowego, aby odłożyć wszystkie nawiasy otwierające na stos i zdjąć nawias jeśli pasuje. Pod koniec iteracji, jeśli stos jest pusty, wszystkie nawiasy zostały zrównoważone, czyli ciąg jest prawidłowy.
private static bool Solution(string input)
{
Stack<char> brackets = new Stack<char>();
Dictionary<char, char> bracketPairs = new Dictionary<char, char>() {
{ '(', ')' },
{ '{', '}' },
{ '[', ']' },
{ '<', '>' }
};
try
{
foreach (char mark in input)
{
if (bracketPairs.Keys.Contains(mark))
brackets.Push(mark);
else if (bracketPairs.Values.Contains(mark))
{
if (mark == bracketPairs[brackets.First()])
brackets.Pop();
else
return false;
}
else
continue;
}
}
catch
{
return false;
}
return brackets.Count() == 0 ? true : false;
}
Teraz co tutaj się dzieje:
- używamy stosu do odkładania i zdejmowania przeglądanych nawiasów
- korzystamy słownika do zdefiniowania nawiasów jakie będziemy sprawdzać
- używamy try catch, gdzie wyjątek zostanie przechwycony w przypadku znalezienia nawiasu zamykającego, przed dowolnym nawiasem otwierającym. Co oznacza, że łańcuch nie jest zbalansowany, zwracamy false.
- w pętli foreach przechodzimy przez każdy znak w ciągu wejściowym
- następnie w if sprawdzamy, czy znak jest jednym z nawiasów otwierających
- jeśli tak to odkładamy go na stos
- jeśli nie sprawdzamy w else if, czy znak jest jednym z nawiasów zamykających
- następnie sprawdzamy, czy nawias zamykający pasuje do ostatniego nawiasu otwierającego
- jeśli tak to zdejmujemy go ze stosu
- jeśli nie, to znaczy ze jest to niezrównoważony string i zwracamy false
- w przeciwnym razie else, dalej przeglądamy znaki
- na koniec upewniamy się, że wszystkie nawiasy są zamknięte
I teraz sprawdzamy nasze rozwiązanie.
static void Main(string[] args)
{
Console.Write("Podaj string: ");
string expression = Console.ReadLine();
Console.WriteLine(Solution(expression));
}
Przykładowe ciągi do sprawdzenia i spodziewane wyniki:
[Ala ma kota {"wszystko dobrze" (12 000), C# (test), Marcin (18), Tomek (44), Web Dev ()}]
[{}()<witaj swiecie>[[{{}}]]]
<test><imie>Tekst</imie)</test>
Cześć, wszystko będzie tutaj i oczywiście każdy udostępnia dane, to naprawdę świetne, pisz dalej.
dzieki
Wreszcie mam znalazłem coś, co mi pomogło. Wielkie dzięki!
dzięki
I’ve been exploring for a lіttⅼe for any high-quality articlеs or blog
posts in this sort of house . Exρloring in Yahoo I at last stumbled upon this site.
Studying this information So i’m satisfied to show tһat I’ve a very
excelⅼent uncanny feeling I came upon exaⅽtly what I needed.
I sucһ a lot certainly will make sure to don?t forget this web site and
provides it a glance regularly.
It іs truly a great and helpful ⲣiеce of information. I am
haрpy that you јust shared this helpful information with us.
Please stay us up to date like this. Thanks
for sharіng.
Cóż to za strona internetowa! Ta strona internetowa przedstawia nam cenne fakty, tak trzymaj.
dzięki
Heya i ɑm for the first timе hеre. I came аcross this board and I in finding It
truly useful & it helped me out a ⅼot. I hope to provide sοmething back and help օthеrs such
as you helped me.
Everyone loves what you guys are up too. This sort of clever work and coverage!
Keep up the terrific works guys I’ve included you guys to our blogroll.
Also visit my web site: saturation; Albert,
I was able to find good information from your content.
Very nice post. I just stumbled upon your blog and wanted
to say that I’ve truly enjoyed surfing around your blog posts.
In any case I’ll be subscribing to your rss feed and I hope you write again very soon!
Niezły post. Na stronach internetowych, na które natrafiam codziennie, uczę się czegoś zupełnie nowego i wymagającego.
Zawsze ekscytujące jest czytanie treści innych autorów i
przećwicz coś z ich stron internetowych.
Cieszę się, że znalazłem ten blog. Zawsze dostarcza cennych informacji i inspiracji do dalszego rozwijania umiejętności programistycznych
Świetne praktyczne przykłady. To, co najbardziej lubię w Twoich artykułach!
Świetne przykłady! Pomocne dla tych, którzy chcą zaimplementować w praktyce
Cieszę się, że ktoś wreszcie poruszył ten temat. To naprawdę istotne dla każdego programisty
Fantastyczne studium przypadku. To zawsze pomaga w zastosowaniu wiedzy w praktyce.”
bardzo dobry materiał, tak trzymać
Хотите получить клиентов используя seo продвижение сайтов это мощный инструмент для повышения видимости вашего веб-сайта в поисковых системах, таких как Google. Это означает больше клиентов, больше продаж и больше прибыли. немкович дизайн студио поможет вам осуществить этот процесс наилучшим образом:
Качественный Дизайн: Мы создаем привлекательные и функциональные веб-сайты, которые удовлетворяют потребности вашей аудитории.
Техническая Компетентность: Наши разработчики обеспечивают техническую исправность вашего сайта, что важно как для SEO, так и для пользовательского опыта.
Оптимизация для Поисковых Систем: Мы проводим SEO-оптимизацию, чтобы ваш сайт был высоко оценен поисковыми системами и мог привлекать больше органического трафика.
Контент и Маркетинг: Мы создаем качественный контент и разрабатываем маркетинговые стратегии, чтобы привлечь и удержать клиентов.
Поддержка и Развитие: Мы остаемся на связи и помогаем вам развивать ваш веб-проект в соответствии с изменяющимися потребностями.
С нами, вы получаете всесторонний подход к вашему онлайн-проекту, который обеспечивает его рост и успех. Начните сотрудничество с Nemkovich Дизайн Студио и добивайтесь лучших результатов в мире веб-дизайна и SEO.
4J8kazM9
Используйте VPN для получения доступа.
Если какое то из зеркал не доступно – возможно блокировка идет со стороны провайдера и для ее обхода достаточно включить любой из бесплатных доступных VPN сервисов.
мега площадка
b5JjiwV5-3
Воспользуйтесь подбором onion ссылок для входа на Mega Darknet Market
Специальный сайт который автоматически совершит подбор рабочей онион ссылки – обратившись к скрытому серверу Меги. На выходе даст onion ссылку на Мега даркнет маркет.
sb mega
b5JjiwV5-3
Masz zdolność do rozbudowywania tematów w sposób, który sprawia, że są bardziej przystępne
Cool + for the post
_________________
https://bdtop.site