如何生成一段Typoglycemia文本(解答)

关于“生成Tygolycemia文本”这个问题,已经有许多同学给了答案。不过,似乎大部分同学都只是以“完成”作为目标,并没有在解法的效率和内存占用上做过多考虑。其实对于这种非常简单的问题,给出一个解法并没有太大意义,而是要从中获取一些经验,否则就算反复解决这类简单的问题,得到的进步依然十分有限。 我们很容易想到,解决这个问题只需要从头至尾遍历这个字符串,找到需要重排的单词,并加以处理即可,所以这题的关键在于如何控制内存的占用以及内存复制大小。我们可以举一个最经典的例子:假如

如何生成一段Typoglycemia文本?

Typoglycemia是个新词,描述的是人们识别一段文本时的一个有趣的现象:只要每个单词的首尾字母正确,中间的字母顺序完全打乱也没有关系,照样可以正常理解。例如这么一段文字: I cdnuol't blveiee taht I cluod aulaclty uesdnatnrd waht I was rdanieg: the phaonmneel pweor of the hmuan mnid. Aoccdrnig to a rseearch taem at Cmabri

如何让您的事件支持逆变

在.NET里“事件”是一种无比常见的成员,我在项目里也经常暴露一些事件供其他地方使用。在.NET里定义一个事件会需要一个委托类型,一般来说我们会使用.NET里自带的System.EventHandler类型,它的签名是: public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e); 但这个定义其实有稍许缺陷。例如,如果您在自己的项目中编写了这样的代码,Resharper这

图灵访谈之三十六:以“玩”之名——赵劼(老赵)专访

最近一个多月工作很忙,再加上之前参加许多活动,搞得身心俱疲,于是这段时间一直在休整,以看书和思考为主,连Wind.js也碰的不多,更别说博客了。接下来又要开始努力了,包括写博客,于是就从转帖这个访谈开始吧,也可以顺便继续修订一下。这是两个月前在图灵公司接受的采访,从一大早到下午,原本还担心无甚可讲,但最后只感觉时间不太够用。这篇采访中所有的内容都是我的真实想法,但后果就是又有更多人往我一举一动上贴“微软”标签了,很无趣,所以这年头说真话还不如跟着分析师评论员们说套话来的好。不

讨论:一则并行聚合计算方案的设计

最近的工作让我想到了一个对集合的元素进行并行聚合的案例,尽管这个需求还不存在,但最近却一直在我的脑海里挥之不去,尚未得出令人满意的结果。今天下班前我将这个问题辛苦地缩减为140字内的描述发到了微博上,得到了许多同学的回复,但可能是由于描述过于简单,得到的建议似乎都不能满足我的需求。于是在此我通过博客详细描述下这个问题的需求,还有我之前做过的尝试,这样讨论起来也可以更加有针对性一些。 问题描述 现有一个集合,最多包含100K个元素。每个元素包含100个字段,为了简化问题假设

我看面试时出(纯)算法题

今天早上一边出门一边在平板上读了左耳朵耗子的新文章《为什么我反对纯算法面试题》,略有想法。正逢外面暴雨如注,我就又回屋打开笔记本发了一些回复,特此整理一下。为了避免有人扭曲我的看法,我先声明我并不是反对这篇文章,相反我是基本同意其中的观点,只不过会加以一些补充,把其中一些我认为有些过头的地方按一按。您也可以认为我的观点是提交一些补丁,发了一些Pull Request(当然不是这种Pull Request)就行了。我当时吐的第一个槽,是说文章太鄙视搞学术研究的人,说他们是书呆子

由eval生成的代码效率真的很差吗?

昨晚跟一位Node.js专家讲解了我的Wind.js类库。之前那位仁兄对Jscex(Wind.js的前身)的看法是“就是不喜欢”,也在微博上对Jscex冷嘲热讽,于是我私信他说建议看一下文档了解一下Jscex。昨天我们的争论主要围绕在eval的使用上,他认为更好的做法是像CoffeeScript那样使用一个额外的进程监听改变,这样更方便。我说CoffeeScript这么做是因为它没有像Wind.js那样借助eval实现完全动态的运行时转化,且生产环境中不会出现eval。最后他

我对“语言之争”的看法:别随便拉我入场

最近又有语言之争了,不过没我什么事情。事情起因可以在酷壳最新一篇文章里看到,简单地说是关于C++的复杂度问题的。我对文章内容其实没有什么看法,但对这句话深有感触:“我对C++的感情有三个过程,先是喜欢地要死,然后是恨地要死,现在的又爱又恨,爱的是这个语言,恨的是很多不合格的人在滥用和凌辱它。”,我以为我想说,这“现在”的状态,就是我对“语言之争”的看法,“语言之争”被太多不合格人凌辱了。 我很喜欢编程语言,但我争论语言时有着基本的原则和必备的知识,没有这些在我看来就不应该参

写给《程序员》杂志社:那些你们早该知道的东西

缘起 最近我写了一篇文章投给《程序员》杂志社,“开源”专题。我写的是关于Jscex的内容,自然十分用心,再加上看了不少之前编辑让我提些意见建议的文章,因此我对于这期的内容还是很有信心的。我是一个对文章阅读体验有极高要求的人,无论是作为文章的读者还是文章的作者,也经常对各种样式混乱的博客表示不满。我也算是《程序员》的长期读者,知道它在代码展示方面有很多不足之处,之前也时常向相关人等(例如刘江总编)提出不少建议。这次既然涉及到我的文章,我自然会加倍小心,千叮咛万嘱咐,也主动配合