实现一个函数,可以左旋字符串中的k个字符 方法一:开辟另一个数组,先把第k+1后面的字符写入这个数组中,再把要左旋的k个字符写进去 (暴力求解法) 实现如下: #include<stdio.h> #include<assert.h> #include<string.h> void left_Relvove(char *str,char *arr,int k) { char *pcur = str+k; //先让指针从第k+1个字符开始,存进arr数组里 assert (str && arr); //断言 while(*pcur) //从第k+1个字符开始,遇到'\0'跳出 { *arr++ = *pcur++; } pcur = str; //把第k+1后面的字符写到arr中后,把指针调向str首元素,开始写入要旋转的k个字符 while(k) { *arr++ = *pcur++; k--; } *arr='\0'; } int main() { int k; char str[10] = {0}; char arr[10] = {0}; scanf("%d", &k); scanf("%s",str); left_Relvove(str,arr,k); printf("%s\n",arr); return 0; } 方法二:定义一个字符串翻转函数,把要左旋的k个字符先逆序翻转,再把k+1后的字符 逆序翻转,最后把整个字符串逆序翻转 (三步翻转法) 实现如下: #include<stdio.h> #include <string.h> void reserve(char *left,char*right) { while (left < right) { char tmp = *left; *left = *right; *right = tmp; left++; right--; } } int main() { char arr[10] = "AABCD"; int len = strlen(arr)-1; int k = 0; char *pstart = &arr[0]; char *pend = arr+len; scanf("%d", &k); reserve(pstart, pstart + k -1); //把要左旋的k个字符先逆序翻转 reserve(pstart + k, pend); //把k+1后的字符逆序翻转 reserve(pstart, pend); //整个字符串逆序翻转 printf("%s\n", arr); system("pause"); return 0; }
【C语言】 左旋字符串
原创
©著作权归作者所有:来自51CTO博客作者Vs吕小布的原创作品,请联系作者获取转载授权,否则将追究法律责任
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【C语言加油站】详细解读字符函数与字符串函数
【C语言加油站】字符函数与字符串函数详细介绍字符函数与字符串函数的相关知识点……
C语言 字符串 字符函数 字符串函数 -
字符串左旋
例如abcdef左旋1:bcdefa左旋2:cdefab
#include bc i++ 左旋 -
字符串系列④ -- 左旋转字符串
目录题目概述解题思路代码实现题目概述对应力扣中剑指 Offer 58 - 左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的空间,这个题会变得
leetcode 算法 字符串 双指针 代码实现 -
字符串04--左旋转字符串
字符串04--左旋转字符串-jz43题目概述解析&参考答案注意事项说明题目概述
左旋转字符串 剑指offer 牛客网 汇编语言 -
字符串左旋转问题
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串
字符串 #include ios -
42、左旋转字符串
题目描述:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个后面...
剑指offer 字符串 bc 移位指令