【C语言】 左旋字符串
来源:互联网 发布:淘宝违规申诉包过 编辑:程序博客网 时间:2024/04/28 15:00
实现一个函数,可以左旋字符串中的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;}
本文出自 “Vs吕小布” 博客,请务必保留此出处http://survive.blog.51cto.com/10728490/1709777
0 0
- 【C语言】 左旋字符串
- C语言实现-字符串左旋
- C语言之——左旋字符串
- C语言三种方法实现字符串左旋
- c语言左旋字符串中的k个字符
- 【C/C++】左旋字符串
- C语言实现字符串的左旋转
- c语言的左旋
- C语言:判断一个字符串是否为另外一个字符串旋转之后的字符串。(左旋右旋、求子串)
- C语言:实现一个函数,可以左旋字符串中的k个字符。
- 【C语言】实现一个函数,可以左旋字符串中的k个字符。
- 【C语言】字符串左旋k次的3种做法
- C语言:将一个字符串左旋任意(K)个字符
- C语言:编写一个函数实现一串字符串的左旋或者右旋
- c语言练习 10-4. 字符串循环左移(20)
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- 【c++】字符串循环左移
- 【C语言】求两数二进制序列不同的位
- 【C语言】 求一个数的二进制反转后的值
- 【C语言】 提取子字符串
- 【Linux】 安装VMware Workstation提示the msi failed的解决办法
- 【Linux】 Linux常用命令大全
- 【C语言】 左旋字符串
- 【C语言】 二维数组中查找,杨氏矩阵
- 【C语言】 字符串逆序
- 霾转晴之心情大好(2015.12.2)
- 【C语言】 实现strstr
- 【C语言】 递归求非负数的每一位之和
- c++作业—6
- 【C语言】 实现strlen
- 【C语言】 实现strcpy