实现一个函数,可以左旋字符串中的k个字符。
来源:互联网 发布:为知笔记 vip 编辑:程序博客网 时间:2024/05/17 03:03
题目:实现一个函数,可以左旋字符串中的k个字符。
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
代码如下:
方法一:
#include<stdio.h>#include<stdlib.h>#include<assert.h>#pragma warning(disable:4996)static leftMoveCore(char *str, int len){ char tmp = str[0]; int i = 0; for (; i<len - 1; i++) { str[i] = str[i + 1]; } str[i] = tmp;}void leftMove(char*str, int len, int count){ assert(str); assert(len>0); assert(count>0); count %= len; while (count--) { leftMoveCore(str, len); }}int main(){ int count = 0; printf("please input a number:"); scanf("%d",&count); char arr[] = "abcd1234";//不能写成*str int len = sizeof(arr) / sizeof(arr[0])-1; printf("before move:%s\n",arr); leftMove(arr,len ,count); printf("after move: %s\n",arr); system("pause"); return 0;}
方法二:
#include<stdio.h>#include<stdlib.h>#include<assert.h>#pragma warning(disable:4996)static void reverseStr(char*start, char*end){ while (start < end) { *start ^= *end; *end ^= *start; *start ^= *end; start++; end--; }}void leftMove(char*str, int len, int count){ assert(str); assert(len>0); assert(count > 0); count %= len; reverseStr(str, str + count - 1); reverseStr(str + count, str + len - 1); reverseStr(str, str + len - 1);}int main(){ int count = 0; printf("please input a number:"); scanf("%d",&count); char arr[] = "abcd1234";//不能写成*str int len = sizeof(arr) / sizeof(arr[0])-1; printf("before move:%s\n",arr); leftMove(arr,len ,count); printf("after move: %s\n",arr); system("pause"); return 0;}
方法三:
#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>#pragma warning(disable:4996)static void reverseStr(char*start, char*end){ while (start < end) { *start ^= *end; *end ^= *start; *start ^= *end; start++; end--; }}void leftMove(char*str, int len, int count){ assert(str); assert(len>0); assert(count > 0); count %= len; int newsize = 2 * len + 1; char*mem = (char*)malloc(sizeof(char)*newsize); strcpy(mem,str); strcat(mem,str); strncpy(str,mem+count,len); free(mem);}int main(){ int count = 0; printf("please input a number:"); scanf("%d",&count); char arr[] = "abcd1234";//不能写成*str int len = sizeof(arr) / sizeof(arr[0])-1; printf("before move:%s\n",arr); leftMove(arr,len ,count); printf("after move: %s\n",arr); system("pause"); return 0;}
阅读全文
0 0
- 1.实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA
- C语言:实现一个函数,可以左旋字符串中的k个字符。
- 实现一个函数,可以左旋字符串中的k个字符
- 实现一个函数,可以左旋字符串中的k个字符
- 实现一个函数,可以左旋字符串中的k个字符
- 实现一个函数,可以左旋字符串中的k个字符(不同复杂度的算法)
- 【C语言】实现一个函数,可以左旋字符串中的k个字符。
- 实现一个函数,可以左旋字符串中的k个字符
- 编写一个函数,可以实现左旋字符串中的k个字符。
- .实现一个函数,可以左旋字符串中的k个字符。
- 实现一个函数,可以左旋字符串中的k个字符
- 【Ex.】实现一个函数,可以左旋字符串中的k个字符
- 实现一个函数,可以左旋字符串中的k个字符。(三种方法)
- 实现一个函数,可以左旋字符串中的k个字符。
- 实现一个函数,可以左旋字符串中的k个字符。
- 三种方法实现一个函数,可以左旋字符串中的k个字符
- 实现一个函数,可以左旋字符串中的k个字符。
- 实现一个函数,可以左旋字符串中的k个字符
- C语言中补码的整数运算特性
- js 几种类型的事件处理程序
- 项目总结(3) H5 JS判断客户端是否是iOS或者Android手机移动端
- 关于DB-9的各个信号理解
- pip错误:TypeError: parse() got an unexpected keyword argument 'transport_encoding'
- 实现一个函数,可以左旋字符串中的k个字符。
- java设计模式(2)——原型模式
- 用Array数据存东西
- Maven学习总结(二)——Maven项目构建过程练习
- Webpack学习笔记
- Java学习笔记(3)——关键字this的使用
- jacob excel转pdf
- UVA
- BugKu MISC 部分题目Write_up(三)