In lisp:
CL-USER> (defun common-chars (&rest strings)
(apply #'map 'list #'char= strings))
COMMON-CHARS
Просто передайте строки:
CL-USER> (common-chars "Toby" "Tiny" "Tory" "Tily")
(T NIL NIL T)
Если вы хотите самих персонажей:
CL-USER> (defun common-chars2 (&rest strings)
(apply #'map
'list
#'(lambda (&rest chars)
(when (apply #'char= chars)
(first chars))) ; return the char instead of T
strings))
COMMON-CHARS2
CL-USER> (common-chars2 "Toby" "Tiny" "Tory" "Tily")
(#\T NIL NIL #\y)
Если вы не заботитесь о позициях и хотите просто список общих символов:
CL-USER> (format t "~{~@[~A ~]~}" (common-chars2 "Toby" "Tiny" "Tory" "Tily"))
T y
NIL
Я признаю, что это был не алгоритм ... просто способ сделать это в lisp, используя существующую функциональность
Если вы хотите сделать это вручную, как уже было сказано, вы будете сравнивать все символы в данном индексе друг с другом. Если все они совпадают, сохраните соответствующий символ.