Make String Great Again!

Make String Great Again!

Дана строка из строчных и прописных букв английского алфавита. Верните строку после того, как сделаете ее снова “великолепной”.

“Великолепная” строка - это строка, в которой нет 2-х соседних символов, где s[i] - строчная буква, а s[i + 1] - та же буква, но в верхнем регистре или наоборот. Пустая строка является “великолепной”.

Действие: чтобы сделать строку “великолепной”, вы можете взять любые 2 соседних символа, которые делают ее плохой и удалить их. Это действие можно выполнять бесконечное количество раз. Верните строку после того, как сделаете ее снова “великолепной”.

Входные данные: str - строка, символы которой могут быть только 0 или 1.

Примеры:

1
2
3
4
5
6
str = "unileEecs";
Output: "unilecs"
str = "abBAcC";
Output: ""
str = "a";
Output: "a"

Разбор

Так как мы будем изменять строку, удалять из нее символы, то создадим новую строку с помощью класса StringBuilder. Этот класс заточен на работу с изменяемыми строками. Если мы встретим соседей, которые являются одной и той же буквой, но в разных регистрах, то удалим их и запустим наш цикл с начала.

2.1. Как можно легко определить, что два символа это одна буква в разных регистрах. В кодировке ASCII значение прописной буквы ‘а’ начинается с кода 97, а строчной ‘A’ - с кода 65. То есть разность этих кодов равна 32. То же самое верно для остальных букв, т.к. они идут подряд. После прохождения цикла возвращаем полученную строку.

Реализация