脑洞大开的翻转代码

介绍

有一个序列 abcdefgh, 假如想要让 abcdefgh 互换位置, 可以如何做呢?

这里介绍一种比较脑洞的解法.

  1. 先翻转子序列
    abc -> cba;
    defgh -> hgfed;
    现在, 整个序列看起来就是这样 cbahgfed.

  2. 再翻转整个序列;
    cbahgfed -> defghabc;

这样就,完成了 abcdefgh 的位置互换.

具有实用价值吗?

通常来说,翻转代码在时间和空间上都很高效(具体还是要看所使用的开发语言的特性),而且逻辑清晰,代码非常简短, 很难出错.

《编程珠玑》第二章的一段话很好的介绍了翻转代码的使用价值.

Brian Kernighan 和 P.J.Plauger 在其1981年出版的Software Tools in Pascal 一书中,就使用该代码在文本编辑器中实现了行的移动. Kernighan 报告称在第一次执行的时候程序就正确运行了, 而他们先前基于链表的处理相似任务的代码则包含几个错误. KenThompson 在 1971 年编写了编辑器和这种求逆代码, 甚至在那时就主张把该代码当作一种常识.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 10,025评论 0 5
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,059评论 3 119
  • 感赏昨晚孩子虽然没睡好 还是一早就起床了 她从不迟到 感赏自己没休息好 还是 听了群友地建议 还是坚持送孩子上学 ...
    健康是福大阅读 1,630评论 2 7
  • 引句俗话吧,这是一个最好的年代,这是一个最坏的年代。 说好是真好,井喷的新书发行量,还有各种电子书、各种语音朗读软...
    竞走的蜗牛阅读 2,532评论 0 1
  • 觉得自己走投无路时我总告诫自己“车到山前必有路,船到桥头自然直”,最后我终于成了拖延症晚期。 今天又听到了SHE的...
    獬豸凌阅读 3,051评论 0 1

友情链接更多精彩内容