题目描述
给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。

例如,字符串 abcdef ,若要让def翻转到abc的前头,只要按照下述3个步骤操作即可:
首先将原字符串分为两个部分,即X:abc,Y:def;
将X反转,即得:cba;
将Y反转,即得:fed。

反转字符串cbafed得到defabc,这就实现了整个反转。

#include <iostream>
#include <string>
using namespace std;//将字符串s中下标from到to之间(从0开始)的字符反转
bool Reverse(char *s, int from, int to)
{if (s==NULL||from>=to){return false;}while(from<to){int temp=s[from];s[from++]=s[to];s[to--]=temp;}return true;
}//将字符串前面m个字符(m<字符串长度)移动到字符串尾部
bool leftRotateString(char *s, int m)
{if (s==NULL||m<0){return false;}int len=strlen(s);if (m>=len){return false;}Reverse(s,0,m-1);Reverse(s,m,len-1);Reverse(s,0,len-1);return true;
}int main()
{char buf[30];strcpy(buf,"abcdef");cout<<buf<<endl;if (leftRotateString(buf,3)){cout<<buf<<endl;}else{cout<<"failure!"<<endl;}return 0;
}

【字符串】旋转字符串相关推荐

  1. LeetCode简单题之旋转字符串

    题目 给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转操作之后,A 能 ...

  2. 【编程题目】左旋转字符串 ☆

    26.左旋转字符串(字符串) 题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部. 如把字符串 abcdef 左旋转 2 位得到字符串 cdefab.请实现字符串左旋转的函数. ...

  3. C语言---写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串

    题目: 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串. #include <string.h> #include <stdio.h> void left_re ...

  4. 经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)

    题目 Assume you have a method isSubstring which checks if one word is a substring of another. Given tw ...

  5. 【剑指offer-Java版】42翻转单词顺序VS左旋转字符串

    反转单词顺序以及左旋转字符串:输入一个英文句子,翻转句子中的单词顺序,单词内部的字母顺序是不变的 – I am a student. -> student. am I 第一步,翻转句子中的所有字 ...

  6. 判断一个字符串是另外字符串的旋转字符串

    题目 假设你有一个isSubstring函数,可以检测一个字符串是否是另一个字符串的子串. 给出字符串s1和s2,只使用一次isSubstring就能判断s2是否是s1的旋转字符串, 请写出代码.旋转 ...

  7. 微软算法100题26 左旋转字符串

    26.左旋转字符串 题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部. 如把字符串abcdef 左旋转2 位得到字符串cdefab.请实现字符串左旋转的函数. 要求时间对长度 ...

  8. 旋转字符串算法由浅入深

    昨天在写一个旋转字符串的函数时,写着写着发现有好多种方法,最简单的莫过于替换然后覆盖再插入.不要小看这种小的算法,其实这其中蕴含着很多容易忽略的编程的细节.下面就跟随着我的文字来由浅入深进行巩固和再学 ...

  9. 《剑指offer》-- 和为S的连续整数序列、和为S的两个数字、左旋转字符串、翻转单词顺序列

    一.和为S的连续整数序列: 1.题目: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100 ...

  10. 题目1362:左旋转字符串(Move!Move!!Move!!!)

    题目1362:左旋转字符串(Move!Move!!Move!!!) 时间限制:2 秒 内存限制:32 兆 特殊判题:否 提交:2306 解决:961 题目描述: 汇编语言中有一种移位指令叫做循环左移( ...

最新文章

  1. python面相对象编程指南_Python面向对象编程指南
  2. python读取txt文件并写入excel-Python实现读取txt文件并转换为excel的方法示例
  3. Java 条件编译 Conditional Compilation
  4. sort与sorted的区别
  5. php mysql 安装错误_Apache+php配置 Mysql安装出错解决办法
  6. 一家典型的云原生企业,如何在创业早期数次“弯道超车”?
  7. dpkg: 依赖关系问题使得 linux-headers-5.7.19-050719-generic 的配置工作不能继续
  8. Android零基础入门第42节:自定义BaseAdapter
  9. html滑动验证图片,滑动验证 和滑动图片验证JS
  10. php获得当月的节假日函数(包含周末,年度节假日)
  11. Ajax请求下载文件
  12. html转义字符 放大镜,特殊符号
  13. 2022年电力电缆操作证考试题模拟考试平台操作
  14. Hive-编写UDF函数(详细教程~~~)
  15. 分享一种身份证OCR识别技术
  16. SWAN之ikev2/acert-fallback测试
  17. LaTeX 使用minted进行代码高亮 Code Highlighting
  18. zynq 烧写W25Q256FV Flash步骤
  19. hiredis的使用
  20. Vue.js--下拉菜单组件

热门文章

  1. 1135 求矩形个数(宁波OJ)
  2. [工具] PicGo + Github 图床
  3. 通过helm在k8s上部署spark(伪集群版)
  4. python实现水仙花
  5. java 耦合解耦_为什么工厂模式可以解耦?why?
  6. 从零开始--系统深入学习android(实践-让我们开始写代码-新手指南-6.使用Fragments构建动态UI)...
  7. [诗歌]个人作诗集锦
  8. 使用与不使用@RequestBody注解的区别
  9. scrapy框架系列 (2) 一个简单案例
  10. windows下php命令行模式错误信息