第一章、左旋转字符串
作者:July,yansha。
时间:二零一一年四月十四日。
说明:(狂想曲,有三层意思:1、思绪纷飞,行文杂乱无章,想到什么,记下什么。2、简单问题深入化,复杂问题精细化,不惧汪洋,不惧艰深,洋洋洒洒,纵横千里。3、依托一道面试题展开来,思维放任不羁,逐步深入,细致入微,反复修正,绝不含糊,以期给读者一个彻彻底底明明白白的交待)原为狂想曲,现在已改为编程艺术系列。
微博:。
出处:。
-------------------------------------------
目录
序
前言
第一节、左旋转字符串
第二节、两个指针逐步翻转
第三节、通过递归转换,缩小问题之规模
第四节、stl::rotate 算法的步步深入
第五节、总结
序
一个懒散的午夜,程序员躺在椅子上,静静点上一支烟,瞅着屏幕上那一行一行如行云流水般的代码,赏心悦目,渐觉困意,便慢慢闭上了俩眼,养神...。
而后,冥冥中房间里似缓缓响起一首钢琴曲,叫不出名字,却铿锵有力且清脆无比,忽而激荡,忽而平静。激荡处,如波涛翻滚,怒洋咆哮,平静处,如潺潺流水,鸟语花香。
半响,程序员突然睁开双眼,关掉编译器,打开记事本,信笔由缰,急速记录下他那杂乱无章,和奇特跳跃的思绪,他怕此刻不赶紧记下来,以后,风吹云散.....于是,世间就有了,程序员面试题狂想曲一乐章的诞生。
此曲终日弹奏,绵绵不绝,终至广为流传,飘进了千万人的耳中,余音不去....
“经过几天的痛苦沉思,最终决定,把原程序员面试题狂想曲系列正式更名为程序员编程艺术系列,同时,狂想曲创作组更名为编程艺术室。之所以要改名,我们考虑到三点:1、为面试服务不能成为我们最终或最主要的目的,2、我更愿把解答一道道面试题,ACM题等各类程序设计题目的过程,当做一种艺术来看待,3、艺术的提炼本身是一个非常非常艰难的过程,但我们乐意接受这个挑战。
同时,本系列程序编程艺术-算法卷,大致分为三个部分:第一部分--程序设计,大凡如面试题目,ACM题目,研究生复试上机的题目,poj的题目,只要是好的,值得设计或深究的题目,我们都不拒绝。第二部分--算法研究,主要以我个人此前写的原创作品-十三个经典算法研究系列为题材,力争通俗易懂,详略得当的剖析各类经典的算法,并予以编程实现。第三部分--编码素养,主要包括程序员编码过程中一些编码规范等各类及其需要注意的问题。
如果有可能的话,此TAOPP系列将采取TAOCP那样的形式,出第一卷、第二卷、...。编程艺术来自哪里?编程采取合适的数据结构?寻求更高效的算法?或者,好的编码规范?希望,本TAOPP系列最终能给你一个完整的答复。
ok,如果任何人对本编程艺术系列有任何意见,或发现了本编程艺术系列任何问题,漏洞,bug,欢迎随时提出,我们将虚心接受并感激不尽,以为他人创造更好的价值,更好的服务”。--引自程序员编程艺术(算法卷):第十章、如何给10^7个数据量的磁盘文件排序。July、updated,2011.05.29。
前言
本人整理微软等公司面试100题系列,包括原题整理,资源上传,帖子维护,答案整理,勘误,修正与优化工作,包括后续全新整理的80道,总计180道面试题,已有半年的时间了。
关于这180道面试题的一切详情,请参见:横空出世,席卷Csdn [评微软等数据结构+算法面试180题]。
一直觉得,这180道题中的任何一题都值得自己反复思考,反复研究,不断修正,不断优化。之前的答案整理由于时间仓促,加之受最开始的认识局限,更兼水平有限,所以,这180道面试题的答案,有很多问题都值得进一步商榷与完善。
特此,想针对这180道面试题,再写一个系列,叫做:程序员面试题狂想曲系列。如你所见,我一般确定要写成一个系列的东西,一般都会永久写下去的。
“他似风儿一般奔跑,很多人渐渐的停下来了,而只有他一直在飞,一直在飞....”
ok,本次系列以之前本人最初整理的微软面试100题中的第26题、左旋转字符串,为开篇,希望就此问题进行彻底而深入的阐述。然以下所有任何代码仅仅只是全部测试正确了而已,还有很多的优化工作要做。欢迎任何人,不吝赐教。谢谢。
第一节、左旋转字符串
题目描述: