首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有功能版的.NET StringBuilder的开源(非通用公共授权)实现?

有没有功能版的.NET StringBuilder的开源(非通用公共授权)实现?
EN

Stack Overflow用户
提问于 2011-12-01 11:01:31
回答 1查看 398关注 0票数 2

我正在寻找StringBuilder的功能性(例如,非命令性)实现或等效的实现。我见过几个函数数组的实现,但它们本身并不支持插入。开源,非(L?A?)GPL的奖励,F#的奖励,但如果需要,我可以从Haskell/OCaml/SML翻译过来。

欢迎对算法的建议。

EN

回答 1

Stack Overflow用户

发布于 2011-12-02 06:42:04

我不知道有什么实现可以完全满足您的需求。然而,我认为你永远不会得到O(1)的插入复杂度(在任意索引下)和O(n)的迭代复杂度。

如果你乐于牺牲插入的复杂性,那么你可以像丹尼尔建议的那样只使用string。另一方面,如果您愿意牺牲toString的复杂性,那么您可以通过使用字符串和索引列表在任何位置插入O(1)来创建不可变的数据结构:

代码语言:javascript
复制
type InsertList = IL of (int * string) list 

// Insert string 'str' at the specified index 
let insertAt idx str (IL items) = IL (idx, str)::items

// Create insert list from a string
let ofString str = IL [str]

向字符串的转换要稍微复杂一些。但是,我认为您可以通过使用可变的LinkedList并在正确的位置插入单个字符,从而获得O( n )的复杂度。LinkedList的使用将本地化到toString,因此数据结构仍然是纯函数的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8336059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档