Задать вопрос
@Mikhail_123

Как решить задачу с собеседования?

На собеседовании попросили решить задачу, написать функцию для: "ab2(3(c)d)" -> "abcсcdccсd"
Сделал решение для конкретного примера, попросили сделать функцию для любых схожих данных, не смог, подскажите как на Kotlin можно решить
  • Вопрос задан
  • 649 просмотров
Подписаться 3 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 3
@acwartz
Тут должна быть ваша реклама.
Предельно простая задача с циклом while + рекурсия.
скобки образуют вызов рекурсивной функции.
Котлин не знаю.
Примерно так:
function task(str) result string {
  i, j integer = 0;
  max integer = str.length;
  ch char = #0;
  while (i < max) {
    ch = str[i];
    if ch in [0..9] {
      //делаем рекурсию столько раз сколько предписано
      //начало строки которую надо обработать, не включая тек. символ и символ начала рекурсии (
      substrStart Integer = i + 2;
      //конец строки которую надо обработать, ссылается на закрывающую рекурсию скобку )
      substrEnd Integer = str.pos(")", substrStart );
      //цикл повторов выражения в скобках
      for j = 1; j < ch; j++:
        //копируем из строки 2(3(c)d) значение 3(с)d не включая скобки и текущий символ указывающий кол-во повторов
        result = result + task(str.substring(substrStart, substrEnd -1)); 
      end for;
      //Прыгаем за закрываюющую скобку т.к. этот участок обработан рекурсивно, и нужно обработать хвост если он есть, например: aaa2(3(c)dd)QQ
      //в первой итерации task("aaa2(3(c)dd)QQ")
      //тут будет переход на позици подстроки "QQ"
      i = substrEnd + 1;
    } else {
      result = result + ch;
      i = i + 1;
    }
  }
}
}
Ответ написан
alekseyHunter
@alekseyHunter
Android developer
написать функцию для: "ab2(3(c)d)" -> "abcсcdccсd"

Перефразированная задача из универа. У нас звучала - "Посчитать результат выражения, состоящего из цифр, арифметических операций и скобок". То есть калькулятор через инфиксную/постфиксную запись, кому как удобнее. Тут аналогичный подход.

Сделал решение для конкретного примера, попросили сделать функцию для любых схожих данных

Если бы собеседование было на позицию Senior, то как подкол интервьюера - смешно. В остальных случаях - не очень.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы