Какой самый быстрый способ итерации назад через символы в строке? т.е. как for ch in str
, только в обратном направлении?
Я думаю, что я должен упустить что-то очевидное, потому что самое лучшее, что я мог придумать сейчас:
for var index = str.endIndex;
index != str.startIndex;
index = index.predecessor() {
let ch = str[index.predecessor()]
...
}
Я понимаю, "что лучше..." можно классифицировать как субъективное; Я полагаю, что то, что я действительно ищу, - это краткая, но читаемая форма этого.
Изменить: хотя функция reverse() работает и является кратким, похоже, что это может быть довольно неэффективно по сравнению с предыдущим, т.е. кажется, что он фактически не выполняет итерацию назад, а создает полную обратную копию символов в String. Это было бы намного хуже, чем мой оригинал, если, скажем, вы искали что-то, что обычно было несколько символов с конца строки в 10 000 символов. Поэтому я оставляю этот вопрос открытым, чтобы привлечь другие подходы.