剑指offer—旋转字符串
来源:互联网 发布:新理念外语网络教学app 编辑:程序博客网 时间:2024/05/17 06:56
2.实现一个函数,可以左旋字符串中的k个字符。
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
#define _CRT_SECURE_NO_WARNINGS 1//2.实现一个函数,可以左旋字符串中的k个字符。//AABCD左旋一个字符得到ABCDA//AABCD左旋两个字符得到BCDAA#include<string.h>#include<stdio.h>#include<stdlib.h>#include<assert.h>void revolve_left(char str[], int k){ assert(str); int len = strlen(str); char tmp = 0; if (k < len) { for (int i = 0; i < k; i++) { tmp = str[0]; for (int j = 0; j < len - 1; j++) { str[j] = str[j + 1]; } str[len - 1] = tmp; } } else { exit(1); }}int main(){ char str[] = "AABCD"; int k = 0; printf("输入你所需要旋转的字符个数:"); scanf("%d", &k); revolve_left(str,k); printf("%s\n", str); system("pause"); return 0;}//还可以用反转,三步反转法,效率更高。//第一步先把你要反转的是k个字符反转,//第二步实现后面的字符反转,//最后实现全部字符再反转一下就好了。#include<string.h>#include<stdio.h>#include<stdlib.h>#include<assert.h>void reverse(char * left, char *right){ while (left < right)//实现反转字符的程序 { char tmp = *left; *left = *right; *right = tmp; left++; right--; }}void revolve_left(char str[], int k){ int len = strlen(str); reverse(str, str + k - 1);//反转你要的k个字符 reverse(str + k, str + len - 1);//反转k之后的部分字符 reverse(str,str+len-1);//全部字符的反转。}int main(){ char str[] = "AABCD"; int k = 0; printf("输入你所需要旋转的字符个数:"); scanf("%d", &k); revolve_left(str,k); printf("%s\n", str); system("pause"); return 0;}
0 0
- 剑指offer—旋转字符串
- 《剑指offer》——左旋转字符串
- 剑指offer——左旋转字符串
- 剑指offer——左旋转字符串
- 剑指offer——左旋转字符串
- 剑指offer——左旋转字符串
- 剑指offer—左旋转字符串
- 剑指offer—左旋转字符串
- 剑指offer—左旋转字符串
- 剑指offer — 左旋转字符串
- 【剑指offer】左旋转字符串
- 剑指offer--左旋转字符串
- 《剑指offer》左旋转字符串
- 剑指offer:左旋转字符串
- 剑指offer 左旋转字符串
- [剑指offer]左旋转字符串
- 剑指offer|左旋转字符串
- 《剑指offer》-左旋转字符串
- 第二次_r日记管理
- leetcode 19:Remove Nth Node From End of List
- 递归实现前向匹配分词
- 对一个单链表进行逆序排列。
- Android问题集锦之二十九:Cannot run program "/xx/build-tools/xx/aapt": error=2, No such file or directory
- 剑指offer—旋转字符串
- 我的感想
- fileTom3u8.bat
- 核心动画的简单理解
- 基于Nginx1.9+LuaJIT+Kafka的点播监控系统实战(上海卓越智慧树网点播监控系统)
- leetcode—— 39——Combination Sum
- linux mysql 忘记密码怎么办
- 关于javaEE工程版本转换问题。
- 微软 Visual Studio Code 1.0 正式发布下载