你知道文本编辑器中的算法和数据结构吗?

良许Linux

共 992字,需浏览 2分钟

 ·

2021-01-15 14:15


来自:今日头条

来源:是不是很酷


前一阵子和一个朋友聊一个算法问题,本质是一个高效进行字符串操作的问题,涉及的操作非常多,越聊越复杂。


最后,问题本身已经被我们聊成了如何实现一个高效的文本编辑器


这显然是一个有现成解的问题。我惊讶地发现我上学的时候竟然没有做过文本编辑器这样一个工程。


一个很酷的数据结构,叫 Rope,可以作为整个文本编辑器内部文档字符串内容存储的数据结构。

wiki 百科连接如下:

https://en.m.wikipedia.org/wiki/Rope_(data_structure)


另一个可以处理相应问题的数据结构,叫 Gap Buffer

维基百科链接:

https://en.m.wikipedia.org/wiki/Gap_buffer


这里还有一本专门介绍文本编辑的开源书籍,叫《The Craft of Text Editing》。

基本就是在讲如何实现一个高效的文本编辑器


虽然年代比较老,是 1999 年的书,但是如果只关注文本编辑器这么一个看似简单的东西,里面到底都涉及什么问题,以及相应的解决思路,足够了。

除了要高效地对文本进行增删改查,对字符串进行各种区间或者非区间的操作以外,还包括渲染,排版,和文件系统的 IO 交互,等等问题。


数据结构与算法在计算机的世界中无处不在。


哪怕是文本编辑器这个看起来平凡得不能再平凡的东西:)


在线阅读地址如下:

http://www.finseth.com/craft/


以上,便是今天的分享,觉得内容对你有所帮助的,还请点个「在看」支持,谢谢各位啦~


良许个人微信


添加良许个人微信即送3套程序员必读资料


→ 精选技术资料共享

→ 高手如云交流社群





本公众号全部博文已整理成一个目录,请在公众号里回复「m」获取!

推荐阅读:

什么是堡垒机?为什么需要堡垒机?

是时候跟Docker说再见了

Linux系统inodes资源耗尽问题


5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「1024」,即可免费获取!!


浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报