Эта проблема
Решение:
Проблема настолько проста, если вы внимательно прочитаете его, он спрашивает, является ли строка S и струна T Равные считать, что вы набрали их в текстовом редакторе (блокноте), но это не так просто у вас будет специальный символ # Это значит Backspace Поэтому, когда вы видите, что он предполагает, что вы нажали на кнопку Backspace в клавиатуре.
Итак, если у вас есть строка, как это AB # C.
Если мы будем следовать правилу, которое мы упомянули выше, вы первый тип a
Тогда вы найдете B
не #
Так что наберите его, и это будет аб
Теперь мы видим #
и это означает Backspace, поэтому нажмите кнопку Backspace, удалит B
и оставить нас с a
тогда последний – C
тип Это AC
И это наш конечный результат.
Теперь это так очевидно, когда мы видим Backspace #
CHAR Мы удалим последний напечатанный CHAR, и это берет на структуру данных под названием Стек Как работает стек в Жизнь манера, что означает Last-In-Fuar-Out
Отказ
Итак, мы пройдем через две строки, чтобы построить стек от своих персонажей и в конце концов, сравниваем оба из них, если они равны или нет.
Давайте сделаем пример.
- Пример:
S
Т
Мы сделаем каждую строку отдельно, а затем комбинируйте все элементы в стеке в одну строку, а затем сравнивать их.
- Мы будем использовать стек под названием
typed_chars = []
. - Начните с
S
. - Начиная с
CH
это нашCH # Backspace
Нет, это не так добавьте его в стекtyped_chars = ['a']
. - С
CH
этоCH
нет, так что добавьте его в стекtyped_chars = [«А», «B»]
Отказ - С
CH
этоотделение
Да, так мы смоделировали щелчок наBackspace #
Кнопка, удаляя последний напечатанный символtyped_chars.pop () == > 'b'
Так что наш новый стек –typed_chars = ['a']
. - С нашими последними
S
карьераотделение
этоCH
Нет, это не так добавить в стекtyped_chars = [«А», «C»]
Отказ Построить окончательную строку из
Typed_Chars
бытьnew_s
Запомни.Теперь сделаю то же самое с
T
Это будет точно такой же процесс и будет заканчиватьnew_t
ОтказЕсли сравнивать оба
new_s
, и это наш ответ.Псевдокод:
1. define helper function called helper that takes one string: helper(s) 2. define typed_chars = [] 3. loop for ch in s: 4. check if ch != '#': 5. typed_chars.append(ch) 5. if ch is equal to # and typed_chars not empty: 6. typed_chars.pop() 7. return "".join(typed_chars) to return one string 8. check if helper(S) is equal to helper(T) or not and return the result.
Сложность:
Сложность времени:
- Мы видим, что мы верим два раза, чтобы построить наши стеки, первый для На) где n Это наша первая строка, а второй раз для O (м) где м наша вторая длина строки, поэтому в общей сложности это будет O (n + m) Отказ
Космическая сложность:
- Мы храним наши символы в стеке два раза, конечно, для нашей первой строки и нашего второго, поэтому в целом это будет O (n + m) Отказ
Оригинал: “https://dev.to/luffy_14/30-day-leetcoding-challenge-backspace-string-compare-2k0j”