Задачи
January 20, 2023
Разбор. Make string great again
Дана строка из строчных и прописных букв английского алфавита.
"Великолепная" строка - это строка, в которой нет 2-х соседних символов, где s[i] - строчная буква, а s[i + 1] - та же буква, но в верхнем регистре или наоборот. Пустая строка является "великолепной".
Действие: чтобы сделать строку "великолепной", вы можете взять любые 2 соседних символа, которые делают ее плохой и удалить их. Это действие можно выполнять бесконечное количество раз.
Верните строку после того, как сделаете ее снова "великолепной".
Разбор
- Так как мы будем изменять строку, удалять из нее символы, то создадим новую строку с помощью класса StringBuilder. Этот класс заточен на работу с изменяемыми строками.
- Если мы встретим соседей, которые являются одной и той же буквой, но в разных регистрах, то удалим их и запустим наш цикл с начала.
2.1. Как можно легко определить, что два символа это одна буква в разных регистрах. В кодировке ASCII значение прописной буквы 'а' начинается с кода 97, а строчной 'A' - с кода 65. То есть разность этих кодов равна 32. То же самое верно для остальных букв, т.к. они идут подряд. - После прохождения цикла возвращаем полученную строку.
Реализация
Play-test
https://dotnetfiddle.net/AZ3cwH
Варианты от наших подписчиков
Подход похожий, но проход по циклу делается один раз и используется стек для хранения результирующей строки.