Задача о длине двух строк

Это одна из тех задач, в которых формулировка может сбить человека с толку и направить по неверному пути. Начну с корректной формулировки. В абстрактном языке программирования имеется 2 строковых переменных и нужно найти сумму длин двух строк. И здесь в голову должен придти один и только один единственно правильный и логичный способ: посчитать длину первой строки, длину второй строки и сложить их сумму.

Однако, хитрый интервьюер может переформулировать условие задачи, что собьёт неподготовленного человека с толку. А звучит это так: какой способ подсчёта длины двух строк быстрее и эффективнее: посчитать отдельно длину каждой строки и сложить значения, либо объединить две строки в одну и посчитать длину?

С одной стороны, формулировка, в которой нужно выбрать правильный ответ из двух предложенных звучит проще, чем вопрос, в котором ответ нужно сформулировать самостоятельно. Но, из-за того, что второй вариант достаточно безумный и мало кому приходит в голову, человек, чувствуя подвох, может выбрать его и будет не прав. Так чем же плох второй вариант?

Что представляет из себя объединение двух строк в одну? Для этого вычисляется сумма длин двух строк и выделяется новая область в памяти, равная длине двух строк. После чего в эту память копируются значения первой и второй строк. После чего ещё раз вычисляется длина итоговой строки. Как видите, в этом способе потребляется в 2 раза больше памяти и выполняется лишние действия.

Опубликовано
В рубрике Задачки