C语言三种方法实现字符串左旋
2016-11-12 14:37
281 查看
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<assert.h> void Left_Spin(char arr[], int len, int k) { assert(arr); assert(len > 0); int i = 0; int temp = 0; temp = arr[0]; int n = 0; for (n = 0; n < k; n++) { for (i = 0; i < len; i++) { arr[i] = arr[i + 1]; } arr[len-1] = temp; } } int main() { int num = 0; char array[] = "abcdef"; int len = strlen(array); printf("Please Enter number:"); scanf("%d", &num); printf("Before:%s\n", array); Left_Spin(array,len,num); printf("After:%s\n", array); system("pause"); return 0; }
//方法二:把字符串分成两部分, //一部分为:从字符串的开始-左旋的次数-1位置的字符串。 //另一部分为:左旋的次数-1位置的字符串到结尾的位的位置 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<assert.h> void Swap(char *x, char *y) { *x ^= *y; *y ^= *x; *x ^= *y; } void Left_Spin(char arr[], int len, int k) { assert(arr); assert(len > 0); char *start = arr; char *middle = arr + (k - 1); char *end = arr + len - 1; while (start < middle) { Swap(start, middle); start++; middle--; } start = arr; middle = arr + (k - 1); while (middle + 1 < end) { Swap(middle + 1, end); middle++; end--; } end = arr + len - 1; while (start < end) { Swap(start, end); start++; end--; } } int main() { int num = 0; char array[] = "abcdef"; int len = strlen(array); printf("Please enter number:\n"); scanf("%d", &num); num %= len; printf("Before:%s\n", array); Left_Spin(array, len, num); printf("After:%s", array); system("pause"); return 0; }
//方法三:进行开辟双倍字符串空间
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
void Left_Spin(char arr[], int len, int k)
{
assert(arr);
assert(len > 0);
char *Buff=NULL;
char *start_Buff = Buff;
Buff = (char*)malloc(2 * len+1);
strcpy(Buff, arr);
strcat(Buff, arr);
strncpy(arr, Buff + k,len);
}
int main()
{
int num = 0;
char array[] = "abcdef";
int len = strlen(array);
printf("Please enter number:\n");
scanf("%d", &num);
num %= len;
printf("Before:%s\n", array);
Left_Spin(array, len, num);
printf("After:%s", array);
system("pause");
return 0;
}
相关文章推荐
- C语言三种方法实现字符串右旋
- 实现一个函数,可以左旋字符串中的k个字符。(三种方法)
- 三种方法实现一个函数,可以左旋字符串中的k个字符
- javascript 实现字符串反转的三种方法
- C语言现代方法之实现字符串的替换
- Java实现字符串的三种方法(不用类库)
- 输入一个长度未知的字符串,用动态分配内存的方法(C语言实现)
- c语言使用指针实现模拟java/c# string.concat字符串串联方法
- 在区域内绘制宽字符串多行自动换行的c语言实现方法
- 用C语言实现字符串反转函数strrev的经典方法
- C语言现代方法之实现字符串的替换
- C语言实现将字符串转换为数字的方法
- C语言字符串反转实现【采用头指针和尾指针方法完成】
- C语言三种方法实现两个变量值的交换
- 计算2的n次方的三种方法(C语言实现)
- C语言实现打印1000以内素数的三种基本方法
- javascript 实现字符串反转的三种方法
- C语言中—— 三种方法实现两个数值交换
- C语言之字符串模糊查询方法的实现
- C语言字符串相关方法的实现