竞赛题目及要求:

定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。

要求:对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。

思路:

如需对一个字符串“abcdef”进行前2个字符左旋转操作,将字符串“abcdef”分成两部分,“ab”和“cdef”,分别对“ab”和“cdef”进行反转操作,“ab”-->"ba","cdef"-->"fedc",     之后合并组成一个“bafedc”的字符串,再将“bafedc”进行发转操作,“bafedc”-->"cdefab","cdefab"就是“abcdef”左旋转两位的结果。

代码实现:

 static void roll(StringBuilder strBuilder,int index,int n){for (int i = 0; i < n/2; i++){char temp = strBuilder[index+i];strBuilder[index+i] = strBuilder[index+n-i-1];strBuilder[index+n-i-1] = temp;}}/*** 对字符串str前index个数进行左旋转操作**/static void leftRotate(StringBuilder str,int index){if (str.Length < index){Console.WriteLine("所要旋转的字符串个数大于字符串总个数");return;}roll(str, 0, index);roll(str, index, str.Length - index);roll(str, 0, str.Length);}

  

转载于:https://www.cnblogs.com/gracexu/archive/2012/09/30/2709013.html

C#实现字符串左旋转操作相关推荐

  1. 数据结构——算法之(010)( 字符串的左旋转操作)

    [申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出. 联系邮箱:Mr_chenping@163.com] 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部.如把字符串 ...

  2. C语言实现字符串左旋转

    常规思路就是字符串整体移动,最后一个字符存入临时变量中去,旋转几下就移动几次.这里介绍一种诡异的方法,通过三次旋转完成.先根据旋转偏移量将字符串分成两个模块,各自逆序,最后整个字符串逆序. ABCDE ...

  3. 翻转单词顺序与左旋转字符串

    题目一:输入一个英文句子,翻转句子中单词的顺序.但是单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a student.",则输出" ...

  4. Leetcode 剑指 Offer 58 - II. 左旋转字符串 (每日一题 20210830)

    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结 ...

  5. python 左旋转字符串

    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结 ...

  6. 翻转单词顺序和左旋转字符串

    输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理. 例如输入字符串"I am a student.",则输出"stu ...

  7. [剑指offer]面试题42:翻转单词顺序 VS左旋转字符串

    面试题42:翻转单词顺序 VS左旋转字符串 题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a st ...

  8. 剑指Offer - 面试题58 - II. 左旋转字符串

    1. 题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转 ...

  9. 【剑指offer】面试题58 - II:左旋转字符串(Java)

    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结 ...

最新文章

  1. CF1030F Putting Boxes Together
  2. ic卡复制软件_使用MCT复制IC卡0扇区的方法(适用于NFC手机复制或模拟门禁卡)...
  3. 数据库内容导出为excel并下载
  4. 多线程循环输出abcc++_C ++循环| 查找输出程序| 套装4
  5. sap wm内向交货步骤_内向型人在数据科学中成功的五个有效步骤
  6. eclipse中server name选项变灰
  7. 【答辩问题】计算机专业本科毕业设计答辩自述2
  8. 为什么2 *(i * i)比Java中的2 * i * i更快?
  9. 贺利坚老师汇编课程50笔记:call和ret配合
  10. 广度搜索 -- 9.2 Word Ladder -- 求具体的路径 -- 图解
  11. 顺序表基本操作归纳整理
  12. Linux中存放用户密码信息的文件,存放密码过期修改等信息
  13. 小麦助教|教你培训机构如提高学员续费率!
  14. 苹果8官方主板价格_iPhone8用户哭了!苹果官方曝出iPhone8主板问题,但售价依然坚...
  15. 5G核心网-Identifiers身份标识
  16. iOS 11 NSPhotoLibraryAddUsageDescription 错误的解决办法
  17. Cadence Allegro 过孔通孔盲孔埋孔详细说明及设计举例图文教程
  18. 数据库视图的基本操作(sql语句)
  19. Ecshop会员注册的Email 电子邮箱改成非必填项
  20. MySQL备份和恢复:mysqldump工具用法详述

热门文章

  1. 什么样的网站结构备受搜索引擎喜爱?
  2. 网络营销外包——网络营销外包公司表示网站更新仅仅是原创还不够
  3. 浅析网站建设之初应该从哪些方面进行考虑?
  4. 网站SEO优化没有捷径!
  5. jsp程序带mysql数据库_【web开发】:JSP连接Mysql数据库(非常详细,代码一看就懂)...
  6. go语言学习(6)select的使用
  7. IRC BOT原来是利用IRC下发CC命令——在xx云环境遇到了,恶意软件开的是6666端口...
  8. 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!...
  9. cassandra集群环境搭建——注意seeds节点,DHT p2p集群管理难道初始化都应如此吗?...
  10. 分享文章《控制情绪,享受人生》