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

点击上方“五分钟学算法”,选择“星标”公众号

重磅干货,第一时间送达

来源:是不是很酷

大家好,我是程序员吴师兄。

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

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

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

一个很酷的数据结构,叫 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+ 树•   一道简简单单的字节跳动算法面试题


欢迎关注我的公众号“五分钟学算法”,如果喜欢,麻烦点一下“在看”,点击左下方阅读原文,获取谷歌师兄的算法刷题笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值