点击上方“五分钟学算法”,选择“星标”公众号
重磅干货,第一时间送达
来源:是不是很酷
大家好,我是程序员吴师兄。
前一阵子和一个朋友聊一个算法问题,本质是一个高效进行字符串操作的问题,涉及的操作非常多,越聊越复杂。
最后,问题本身已经被我们聊成了如何实现一个高效的文本编辑器。
这显然是一个有现成解的问题。我惊讶地发现我上学的时候竟然没有做过文本编辑器这样一个工程。
一个很酷的数据结构,叫 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/
以上,便是今天的分享,觉得内容对你有所帮助的,还请点个「在看」支持,谢谢各位啦~
推荐阅读
• 吴师兄实名吐槽 LeetCode 上的一道题目。。。• 面试字节跳动时,我竟然遇到了原题……• 计算机专业的学生怎样练习编程才能把编程学精通?• 为什么 MySQL 使用 B+ 树• 一道简简单单的字节跳动算法面试题
欢迎关注我的公众号“五分钟学算法”,如果喜欢,麻烦点一下“在看”,点击左下方阅读原文,获取谷歌师兄的算法刷题笔记。