Почему это возвращает «НЕТ»?
Функция возвращает "NO"
, потому что первый l oop, который заполняет map
, не учитывает последний символ s1
- поэтому непосредственно перед началом второго for
map
будет содержать записи для b
, e
, t
, r
и o
:
map['b'] = 'e'
map['e'] = 't'
map['t'] = 's'
map['r'] = 'o'
map['o'] = 't'
Я подозреваю, что автор этого кода думал, что basic_string::size()
возвращает количество элементов в базовом символьном массиве (т.е. включая нуль-терминатор \0
), но на самом деле возвращает количество символов (ну, количество элементов, которые не обязательно являются символами в зависимости от используемой кодировки).
Сама функция полностью неверна, потому что она не выполняет никаких c логических операций, касающихся проверки общих подстрок - она просто проверяет, есть ли какие-либо символ в s2
существует в s1
(кроме последнего символа s1
).
Решение неверное, и HackerRank принимает его как «правильное», я хочу понять d почему.
Единственная причина, которую я могу придумать, это то, что HackerRank использует неадекватный набор тестовых примеров, что необычно, потому что они, как правило, хороши в подобных вещах.