Задача
Создать функцию для обратного объединения строк
вход
Две строки (буквенно-цифровые + пробелы), где одна должна быть вычтена для другой.
- Вы можете предположить, что вычитаемая строка никогда не будет больше, чем другая.
Выход
Результат от вычитания
Вычитание
Вы должны удалить одну строку из начала или конца другой строки. Если строка присутствует в начале и в конце, вы можете удалить только одну, которая будет удалена на ваше усмотрение.
Если строка не находится в начале или в конце или не является точным соответствием, это недопустимое вычитание, и вы должны вывести исходную строку.
Тестовые случаи
Действительное вычитание
'abcde','ab' -> 'cde'
'abcde','cde' -> 'ab'
'abab','ab' -> 'ab'
'abcab','ab' -> 'abc' or 'cab'
'ababcde','ab' -> 'abcde'
'acdbcd','cd' -> 'acdb'
'abcde','abcde' -> ''
'abcde','' -> 'abcde'
'','' -> ''
Неверное вычитание (возвращает исходную строку)
'abcde','ae' -> 'abcde'
'abcde','aa' -> 'abcde'
'abcde','bcd' -> 'abcde'
'abcde','xab' -> 'abcde'
'abcde','yde' -> 'abcde'
Неверный ввод (не нужно обрабатывать)
'','a' -> ''
Это код-гольф , поэтому выигрывает самый короткий код в байтах!
'abcde','bcd' -> 'abcde'
, за нарушение моего решения
'ababcde', 'ab'
→ 'abcde'
в качестве контрольного примера. Некоторые наивные алгоритмы терпят неудачу на этом.
cde
? Что вы подразумеваете под действительным? Нужно ли нам оценивать достоверность ввода или вы имеете в виду, что мы не получим неверные данные?