Найдите строку среди заданных строк, представленных с использованием заданного шаблона шифрования

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

Учитывая массив строк arr[] размера N и зашифрованную строку str , задача состоит в том, чтобы найти правильную строку из заданного массива строк, шифрование которых даст str , где str шифруется с использованием следующих правил:

  • Начальные символы образуют целое число, представляющее количество символов верхнего регистра в расшифрованной строке.
  • Следующие 3 символа — это последние 3 символа расшифрованной строки в обратном порядке.
  • Последние несколько символов также образуют целое число, представляющее сумму всех цифр в пароле.

Длина каждой строки в массиве не менее 3, и если правильных ответов больше одного, выведите среди них.

Примеры:

Input: arr[] = {“P@sswORD1”, “PASS123word”}, str = “4dro6”
Output: PASS123word
Explanation: The decrypted string representing str = “4dro6” should have 
4 upper case letters, sum of all digits in it as 6 and ends with “ord”. 
The output string satisfies all the following properties.

Input: arr[] = {“Geeks”, “code”, “Day&Night”}, str = “1thg10”
Output: -1
Explanation: No such string exists which satisfies the encryption.

Подход: Данная проблема представляет собой проблему, основанную на реализации, которую можно решить, выполнив следующие шаги:

  • Сохраните целое число, представленное начальными цифрами, в целочисленном начале.
  • Точно так же сохраните целое число, представленное последними цифрами, в конце целого числа.
  • Сохраните и переверните строку в середине заданных двух целых чисел в строке mid.
  • Перебрать все строки в заданном массиве arr[] и, если какая-либо из них удовлетворяет всем заданным трем условиям, вернуть соответствующую строку, в противном случае вернуть -1 .

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N * M), где M — максимальная длина строки массива.
Вспомогательное пространство: O(1)