Каков наиболее эффективный способ реализации функции «перевернуть строку» в Opa?
Мне известно о String.reverse()
.Он выполняет свою работу, но его исходный код привязан к некоторой внешней функции.Я хочу понять, какие самые лучшие (самые быстрые) инструменты для изменения порядка строк.
Так, например, это работает, но не особенно быстро:
reverse(s:string) =
p = parser
| x=(.) xs=(.*) -> Text.concat(reverse(Text.to_string(xs)), x)
| x=(.*) -> x
Parser.parse(p, s)
Как я могузаставить это работать лучше?
Редактировать: Другая реализация, основанная на ответе Акопровского
Я думаю, это то, что он имеет в виду.Эта версия намного быстрее, чем версия парсера, но встроенный String.reverse
- это то, что нужно, если все, что вам нужно сделать, это перевернуть строку.
reverse_list(l:list(string)):list(string) =
match l with
| [x|xs] -> reverse_list(xs) ++ [x]
| _ -> []
reverse_string(s:string) =
string_list = List.init((i -> String.get(i, s)), String.length(s))
String.flatten(reverse_list(string_list))
Редактировать: вышеприведенная реализация не являетсяИдеально
Проверьте принятый ответ для лучшего варианта.