Swift String Iterator // Собеседование, работа над ошибками

swift
string
ios

#21

Круто!) Я что-то похожее сделал, но без реализации базовых протоколов.
Я когда уже написал статью нашел, что есть makeIterator(). Он только в одну сторону) Я думаю со временем в стандартную библиотеку добавят и обратный. Или может уже как-то можно его получить.


#22

Это я явно ступил :slight_smile:


#23

Боюсь это тяжеловесный по памяти и времени способ, но по-моему сама простая реализация :slight_smile:

var str = "hellol((leh"
let nums = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
let str2 = str.filter({ nums.contains($0) })
print(str2 == String(str2.reversed()) ? true : false)

#24

Боже какие страсти. Было интересно почитать за размышлениями умных людей. Я правда уже после универа забыл о всяких там O(n) и прочее, но мне это пока не мешает работать. Хотя и требования к работе были проще, да и Swift пришлось осваивать за 2-3 недели.

P.S. покажусь занудой, но мне кажется это уже экономия на спичках смотреть на кол-во итераций со строкой и кол-во потребляемой памяти в таких мелких задачах.

P.S.S читал как что-то захватывающее.


#25

Ох, какую старую тему вы раскопали :roll_eyes:
Да, тут проблема в памяти.
String(str2.reversed()) вот тут вам потребуется скопировать всю строчку, т.е. O(n) доп. памяти.

Ещё мелкое замечание, print(str2 == String(str2.reversed())) тут итак будет true или false :slight_smile:


#26

Здравствуйте, да я с вами соглашусь, что в практике это редко бывает полезно. Хотя раз на раз не приходиться.
Я вскоре планирую опубликовать статью как раз на тему оценки алгоритмов с примерами на Swift. В том числе я постараюсь ответить на вопрос: “Зачем это всё?”.

Если интересно, то вы можете подписаться в медиуме или в твиттере чтобы получить уведомление :slight_smile: