Loading...

c语言-字符串旋转

/* 题目名称: 字符串左旋 实现一个函数,可以左旋字符串中的k个字符。 例如 : ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB */  #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h>  //方法一 void LeftMove1(char* a, int k) { 	int n = strlen(a); 	int i = 0, j = 0; 	for (i = 0; i < k; i++) 	{ 		char t = *a; 		for (j = 0; j < n - 1; j++) 		{ 			*(a + j) = *(a + j + 1); 		} 		*(a + n - 1) = t; 	} }  void Reverse(char* left, char* right)  //翻转 { 	while (left < right) 	{ 		char t = *left; 		*left = *right; 		*right = t; 		left++; 		right--; 	} }  //方法二 void LeftMove2(char* a, int k)  //三步翻转法 { 	int n = strlen(a);      //字符串:FGHIJ     左旋2个元素 	Reverse(a, a + k - 1);  //左边翻转 FG -> GF 	Reverse(a + k, a + n - 1);  //右边翻转 HIJ -> JIH 	Reverse(a, a + n - 1);  //整体翻转 GFJIH -> HIJFG }  int main() { 	char arr1[] = "ABCDE"; 	char arr2[] = "FGHIJ"; 	char arr3[] = "KLMNO"; 	int k = 2; 	LeftMove1(arr1, k); 	printf("%s\n", arr1); 	LeftMove2(arr2, k);  //三步翻转法 	printf("%s\n", arr2); 	return 0; }