Opaで「文字列を逆にする」関数を実装するための最もパフォーマンスの高い方法は何ですか?
私は知っていString.reverse()
ます。それは仕事を成し遂げますが、そのソースコードはいくつかの外部関数にバインドされています。文字列を並べ替えるのに最適な(最速の)ツールを理解したいと思います。
したがって、たとえば、これは機能しますが、特に高速ではありません。
reverse(s:string) =
p = parser
| x=(.) xs=(.*) -> Text.concat(reverse(Text.to_string(xs)), x)
| x=(.*) -> x
Parser.parse(p, s)
どうすればこれをより良く実行できますか?
編集:akoprowskiの回答に基づく別の実装
これが彼が考えていることだと思います。これはパーサーバージョンよりもはるかに高速です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))
編集:上記の実装は理想的ではありません
より良いオプションについては、受け入れられた回答を確認してください。