Рубрики
Без рубрики

30-дневный вызов летекодирования: Строка Backspace Сравнить

Проблема 9-дневной задачи 30-дневного вызова лецкодирования. Теги с Python, LeetCode, кодированием, алгоритмами.

Эта проблема

Решение:

Проблема настолько проста, если вы внимательно прочитаете его, он спрашивает, является ли строка 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) Отказ
  • Решение в Python

Оригинал: “https://dev.to/luffy_14/30-day-leetcoding-challenge-backspace-string-compare-2k0j”