Найдите номер мобильного телефона, образованный с использованием первых цифр массивов абсолютных разностей последовательных номеров.

Опубликовано: 20 Сентября, 2022

Учитывая String ph[] , задача состоит в том, чтобы найти новый номер для пользователя на основе следующих условий:

  1. Новый номер также будет начинаться с той же цифры, что и исходный номер.
  2. Цифры нового числа будут первыми цифрами ряда массивов абсолютных разностей последовательных элементов.

Примеры:

Input: ph = “9827218706”
Output: 9154301011
Explanation:

Input: ph =”9647253846″
Output: 9310100011

Подход: Рассмотрите следующие шаги для решения этой проблемы:

  1. Преобразуйте каждый символ из строки в целое число и сохраните его в массиве ph1[] , используя понимание списка.
  2. Объявите пустую строку ph2 .
  3. Преобразуйте первый элемент массива ph1[ ] в строку и добавьте его в ph2 .
  4. Используя понимание списка, создайте массив, сохранив абсолютную разницу последовательных элементов.
  5. Назначьте этот массив ph1 .
  6. Повторите шаги 3-5 десять раз, так как номер телефона состоит из десяти цифр.

Ниже приведена реализация описанного выше подхода.

Временная сложность: O(N*N)
Вспомогательное пространство: O(N)

Эффективный подход: при этом подходе не требуется дополнительного места для хранения элементов в массиве. Сначала объявим пустую строку ph2 , в которой будет храниться счастливое число, теперь создадим цикл for, в котором первый символ строки будет добавлен к ph2 , и снова цикл for, чтобы найти абсолютную разницу последовательных элементов. Теперь строка абсолютной разницы будет присвоена исходному номеру ph1 , и будут выполнены те же шаги. Выполните следующие шаги, чтобы решить проблему:

  • Инициализировать строковую переменную ph2[] как пустую строку.
  • Перебрать диапазон [0, N), используя переменную i , и выполнить следующие задачи:
    • Добавьте ph[0] к переменной ph2[].
    • Инициализируйте строковую переменную S[] как пустую строку.
    • Перебрать диапазон [0, N-1), используя переменную j , и выполнить следующие задачи:
      • Добавьте значение str(abs(int(ph[j])-int(ph[j+1]))) к переменной S[].
    • Установите значение ph как S[].
  • После выполнения вышеуказанных шагов выведите значение ph2[] в качестве ответа.

Ниже приведена реализация описанного выше подхода.

Временная сложность: O(N*N)
Вспомогательное пространство: O(N)