2016-03-03 62 views
-3

我做的OCaml的指派,我被困在我需要一个字符串转换为字符数组的一部分。OCaml的转动字符串字符数组,没有空格

的要求是,该结果阵列应该没有空格。例如,

给定的输入:

let s = "This is a string test";; 

输出应使用以下指令

let test = Array.init (String.length y) (fun t -> y.[t]);; 

test的值具有空白是

[|'t'; 'h'; 'i'; 's'; 'i'; 's'; 'a';'s';'t';'r';'i';'n';'g';'t';'t';'e';'s';'t';|]; 

针对此问题即时其中有空格' '

回答

0

一个问题是,在阵列最有可能将不会是大小为字符串相同,所以使用Array.init是不是一个很好的解决方案。所以让我们看看你想做什么:

  • 你正在将每个字符映射到一个数组的条目。
  • 映射是有条件的,因为你不想包含空格。
  • 你不知道数组的最终大小,所以你需要动态创建它。

下面是一个方法:

  • Array.concat串接阵列的列表到单个阵列。
  • 将字符串成微小阵列的列表 - 列表中的每个元素是一个单独的字符或一个空数组的数组,如果它是一个空间。

因为这是一个任务,我就让你写的最终解决方案。

0

还有两种方法可以做到这一点。由于这是一个排序,我不会给你代码,只是想法。

  1. 将字符串转换为char列表,​​过滤掉所有''(这可以在一个循环或两个循环中完成)。然后将列表转换为数组。
  2. 计数字符串中不是空格的数量,创建一个合适的阵列,在所述字符串复制字符到阵列(跳过空格)
相关问题