1 题目

字符串的左旋转操作是把字符串前面的若干字符转移到字符串尾部,比如字符串abcdef和数字2,函数返回左旋转得到的结果是cdefgab

2 思路

先反转字符串所有,通过数字n找到的边界 ,然后再反转字符串部分左边和部分右边。

3 代码实现

#include <stdio.h>/** 反转整个字符串*/
void reverse(char *begin, char *end)
{if (NULL == begin || NULL == end)return;while (begin < end){char temp = *end;*end = *begin;*begin = temp;++begin;--end;}
}/** 左旋转字符串* abcdefg* gfedcba* cdefgab*/
char* leftReverse(char *str, int n)
{if (str == NULL || n < 0){return NULL;}//先反转所有字符串char *begin = str;char *end = str;int len = 0, count = n;while (*end != '\0'){++end;++len;}if (n > len){return NULL;}end--;reverse(begin, end);begin = str;//移动end到左右反转分界地方while (n > 0){--n;--end;}//反转左边一部分reverse(begin, end);//反转右边一部分reverse(end + 1, end + count);return str;
}int main()
{char b[] = "abcdefg";char *result = NULL;result = leftReverse(b, 2);printf("%s\n", result);return 0;
}

4 运行结果

cdefgab

剑指offer之左旋转字符串相关推荐

  1. LEETCODE | PYTHON | 剑指 Offer 58 - Ⅱ | 左旋转字符串

    LEETCODE | PYTHON | 剑指 Offer 58 - Ⅱ | 左旋转字符串 1. 题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作 ...

  2. 《剑指offer》左旋转字符串

    题目:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=" ...

  3. 《剑指offer》-左旋转字符串

    汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S="abc ...

  4. 剑指offer:左旋转字符串

    题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=&quo ...

  5. 剑指offer系列48---左旋转字符串

    [题目]对于一个给定的字符序列S,旋转指定位置左边的字符到右边.. * 例如,字符序列S="abcXYZdef",要求输出循环左移3位后的结果,即"XYZdefabc&q ...

  6. 【LeetCode 剑指offer刷题】字符串题6:67 把字符串转成整数

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 67 把字符串转成整数 题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符 ...

  7. 【LeetCode 剑指offer刷题】字符串题12:Valid Palindrome(回文词系列)

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Valid Palindrome Given a string, determine if it is a pali ...

  8. 剑指offer 算法(数组 字符串)

    题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 解析:解题思路:从二维 ...

  9. 《剑指Offer》38:字符串的排列

    题目 输入一个字符串,打印该字符中字符的所有排列. 例如,输入字符串abc,则打印出由字符a.b.c所能排列出来的所有字符串有abc.acb.bac.bca.cab.cba 分析 把一个字符串看成由两 ...

最新文章

  1. 谷歌AI专家爆料:90%的人都不知道,写不出好代码,是输在了这点上!
  2. 面试时写不出排序算法?看这篇就够了
  3. AspxCallBack控件的CallBack事件
  4. nl.basjes.parse.useragent.UserAgentAnalyzer内存泄漏问题解决
  5. Java Micro Framework:您无法忽略的新趋势
  6. dj鲜生-29-登陆后欢迎信息的显示
  7. 【Android开发—智能家居系列】(三):手机连接WIFI模块
  8. GitHub 和 Gitee 树形展示插件
  9. 免费python课程排行榜-Python爬虫学习排行榜
  10. 买入股票后必须遵守的八项原则
  11. 虚拟 Linux【转】
  12. go channel
  13. C盘空间不够?win10自带mklink命令给C盘软件搬家减负【计算机小白必备】
  14. 人物摄影中的基本取景法 特写和大特写
  15. 考取RHCE认证的历程,总结的经验
  16. android 旋转屏幕 view的调整,Android ViewModel在屏幕旋转时重新创建
  17. ubuntu查看系统信息命令
  18. ORA-12012: error on auto execute of job SYS.BSLN_MAINTAIN_STATS_JOB
  19. java图形界面UI设计——简单的计算器
  20. 微信小程序05---WebSocket的使用

热门文章

  1. 如何在单个测试中同时执行多个断言
  2. .NET 6新特性试用 | 自动生成高性能日志记录代码
  3. WPF 透明窗口在桌面上放虫子。。。
  4. Visual Studio的奇淫技巧,你知道多少?
  5. Scott Hanselman 喊你来看看最新的极简APII
  6. C# 使用 Index 和 Range 简化集合操作
  7. [Abp 源码分析]多租户体系与权限验证
  8. 5G在工业互联网应用的机遇与挑战
  9. .Net Core 2.2升级3.1的避坑指南
  10. 面试官:你连HTTP请求Post和Get都不了解?