gpt4 book ai didi

algorithm - F# - 算法和字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:41 24 4
gpt4 key购买 nike

假设我有一个长度为 N 的字符串,其中仅包含 0 或 1。我想将该字符串拆分为多个字符串,并且每个字符串应仅包含一个数字。

例子:

00011010111

应该拆分成:

  • 000
  • 11
  • 0
  • 1
  • 0
  • 111

如果将 for 循环与字符串生成器一起使用,我能想到的唯一解决方案(用下面的伪代码编写,抱歉,更多的是 c#):

 result = new list<string>
tmpChar = ""
tmpString = ""
for each character c in MyString
if tmpchar != c
if tmpsString != ""
result.add tmpString
tmpString = ""
endIf
tmpchar = c
endIf
tmpString += tmpChar
endFor

您是否有任何其他解决方案,也许是使用更实用的方法的聪明解决方案?

最佳答案

我认为 Seq.scan 很适合这个,这本质上是一个非常程序化的问题,像那样保留顺序。但我相信这里的代码可以满足您的要求。

"00011010111"
|> Seq.scan (fun (s, i) x ->
match s with
| Some p when p = x -> Some x, i
| _ -> Some x, i + 1 ) (None, 0)
|> Seq.countBy id
|> Seq.choose (function
| (Some t, _), n -> Some(t, n)
| _ -> None )
|> Seq.toList

关于algorithm - F# - 算法和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45578261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com