1. 程式人生 > >1.實現一個函式,可以左旋字串中的k個字元。 2.判斷一個字串是否為另外一個字串旋轉之後的字串。

1.實現一個函式,可以左旋字串中的k個字元。 2.判斷一個字串是否為另外一個字串旋轉之後的字串。

1.實現一個函式,可以左旋字串中的k個字元

ABCD左旋一個字元得到BCDA ABCD左旋兩個字元得到CDAB

#include<stdio.h>
#include<string.h>
void left_move(char*str, int k)
{
	char tmp = 0;
	int len = strlen(str);
	while (k--)
	{
		char* cur = str;
		tmp = *cur;
		while (*(cur + 1) != '\0')
		{
			*cur = *(cur + 1);
			cur++;
		}
		*cur = tmp;
	}
}
int main()
{
	char arr[10] = "ABCD";
	int k = 0;
	scanf_s("%d", &k);
	left_move(arr, k);
	printf("%s\n", arr);
	system("pause");
	return 0;
}

2.判斷一個字串是否為另外一個字串旋轉之後的字串。 

例如:給定s1 = AABCD和s2 = BCDAA,返回1,給定s1=abcd和s2=ACBD,返回0. AABCD左旋一個字元得到ABCDA AABCD左旋兩個字元得到BCDAA AABCD右旋一個字元得到DAABC

#pragma warning(disable:4996)//使用不安全時候定義
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
	char arr[20] = "AABCD";
	char *p = "ABCDA";
	if (strlen(p) != strlen(arr))
	{
		printf("不是旋轉得到的字串\n");
		return 0;
	}
	strncat(arr, arr, strlen(arr));
	if (strstr(arr, p) != NULL)
	{
		printf("是旋轉得到的字串\n");
	}
	else
	{
		printf("不是旋轉得到的字串\n");
	}
	system("pause");
	return 0;
}