в питоне есть проблема заданий, сформулированных для си-подобных языков. list(s) и ‘’.join(s) это уже не O(1).
именно это обстоятельство меня изначально и смутило. если в задании требуется O(1) по памяти питоновский list содержит наверное все же не указатели как в сях с блэкджеком адресной арифметикой, а ref'ы, из за которых собсна и всплывает та самая питонячья неуклюжесть для простого решения O(1) memory.