小编Rhi*_*ian的帖子

OCaml中的高效输入

假设我正在编写一个OCaml程序,我的输入将是一个由空格分隔的整数整数,即

let string = input_line stdin;;
Run Code Online (Sandbox Code Playgroud)

将返回一个看起来像例如"2 4 34 765 5 ..."的字符串.现在,程序本身将采用另外两个值i和j,它们指定此输入的小子序列,主程序将在该子序列上发生(让我们说主程序是找到这个子列表的最大值).换句话说,整个流将被输入到程序中,但程序将最终仅作用于输入的一小部分.

我的问题是:将输入流的相关部分转换为可用的东西(即一串整数)的最佳方法是什么?一种选择是将整个输入字符串转换为使用的int列表

let list = List.map int_of_string(Str.split (Str.regexp_string " ") string;;
Run Code Online (Sandbox Code Playgroud)

然后一旦输入了界限i和j,就可以轻松找到相关的子列表及其最大值.问题是大流的初始预处理非常耗时.

是否有一种直接从大流中定位小子列表的有效方法,即处理输入和主程序?

ocaml user-input

5
推荐指数
2
解决办法
1713
查看次数

标签 统计

ocaml ×1

user-input ×1