1. 程式人生 > >初夏小談:字串的旋轉

初夏小談:字串的旋轉

由於字串問題是比較混亂的一個問題,今天來說說字串中的旋轉問題。

求旋轉Ñ次後的字串

1.實現一個函式,可以左旋字串中的k個
字元.ABCD左旋一個字元得到BCDA
ABCD左旋兩個字元得到CDAB

#include<Aventador_SQ.h>
void ZuoXuan(char arr[],int num,int k)
{
	int i = 0;
	int j = 0;
	char temp;
	while (i < k)
	{
		temp = arr[0];
		
		for (j = 1; j < num; j++)//迴圈移動字串的位置
		{
			arr[j-1]= arr[j];
			if (j == num - 1)
			{
				arr[j] = temp;
			}
		}
		//arr[j] = temp;
		i++;
	}
	//for (i = 0; i < num; i++)
	//{
	//	printf("%c", arr[i]);
	//}
	//printf("\n");
	printf("%s\n", arr);
}

int main()
{
	int k = 0;
	int num = 0;
	char arr[100];
	scanf("%s", arr);
	num = strlen(arr);
	printf("請輸入需要左旋的個數:");
	scanf("%d", &k);
	ZuoXuan(arr,num,k);
	system("pause");
	return 0;
}

判斷是否為旋轉字串

2.判斷一個字串是否為另外一個字串旋轉之後的字串。
例如:給定s1 = AABCD和s2 = BCDAA,返回1,給定s1 = abcd和s2 = ACBD,返回0。

#include<Aventador_SQ.h>

int IsXuan(char arr1[], int num1, char arr2[], int num2)
{
	int row = 0;
	int i = 0;
	int j = 0;
	char temp;//用於記錄儲存第一個字元
	if (num1 != num2)
	{
		return 0;
	}
	else
	{
		//左旋與右旋順序相同(左旋一個相當於右旋num1-1個)
		//判斷左旋的情況
		for (row = 1; row < num1; row++)//逐次比較旋轉次數
		{
			for (i = 0;i < row;i++)//旋轉的字元數的次數
			{
				temp = arr2[0];
				for (j = 1; j < num1; j++)//迴圈移動字串的位置
				{
					arr2[j - 1] = arr2[j];
					if (j == num1 - 1)
					{
						arr2[j] = temp;
					}
				}
				for (j = 0; j < num1; j++)
				{
					if (arr1[j] == arr2[j])
					{
						if (j == num1 - 1)
						{
							return 1;
						}
					}
				}
			}
		}
	}
	return 0;
}
int main()
{
	int num1 = 0;//記錄輸入第一條字串的長度
	int num2 = 0;//記錄第二條字串的長度
	int num = 2;//用來接收返回值
	char arr1[100];
	char arr2[100];
	printf("請輸入字串1:");
	scanf("%s", arr1);
	printf("請輸入字串2:");
	scanf("%s", arr2);
	num1 = strlen(arr1);//求取字串的長度
	num2 = strlen(arr2);
	num = IsXuan(arr1, num1, arr2, num2);
	if (num == 1)
	{
		printf("是旋轉字串\n");
	}
	else
	{
		printf("不是旋轉字串\n");
	}
	system("pause");
	return 0;
}

如果有更好的建議或意見請新增博主QQ2630420233,博主在此感謝大家。

                                                                                                                                                                                                              珍&原始碼