你知道文本编辑器中的算法和数据结构吗?
共 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/
以上,便是今天的分享,觉得内容对你有所帮助的,还请点个「在看」支持,谢谢各位啦~
推荐阅读:
5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「1024」,即可免费获取!!