C語言實現判斷一個字元竄是否為另外一個字串旋轉之後的字串
阿新 • • 發佈:2018-12-19
//判斷一個字元竄是否為另外一個字串旋轉之後的字串
例如:給定s1 = AABCD和s2 = BCDAA,返回1,給定s1 = abcd和s2 = ACBD,返回0. // AABCD左旋一個字元得到ABCDA // AABCD左旋兩個字元得到BCDAA // AABCD右旋一個字元得到DAABC
解題思路:
1> 首先需要一個旋轉字串的函式、判斷字串是否相等的函式和交換字元的
函式;
2> 實現旋轉:根據你要旋轉字元的個數迴圈幾次,再通過迴圈交換字元的順序;
3> 實現判斷:判斷兩個字串是否相等需要判斷每個字元是否相等,若有一個
不相等,返回0,否則返回1;
4> 程式碼完成,輸出返回值。
原始碼:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> //2.判斷一個字串是否為另外一個字串旋轉之後的字串。 //例如:給定s1 = AABCD和s2 = BCDAA,返回1,給定s1 = abcd和s2 = ACBD,返回0. // //AABCD左旋一個字元得到ABCDA //AABCD左旋兩個字元得到BCDAA // //AABCD右旋一個字元得到DAABC //交換字串中的字元 void Swap(char* x, char* y) { char tmp =*x; *x = *y; *y = tmp; } //旋轉字串中的字元 char* LeftMove(char arr1[]) { int num = 0; int len = strlen(arr1); printf("請輸入你想要左旋的個數:"); scanf("%d", &num); for (int i = 0; i < num; i++) { for (int j = 0; j < len - 1; j++) { //交換字串的首字元和第二個字元,依次交換後面的 Swap(&arr1[j], &arr1[j + 1]); } } return arr1; } //判斷兩個字串是否相等 int Exchange(char* arr1, char* arr2) { int i = 0; int len = strlen(arr1); for (i = 0; i < len; i++) { if (arr1[i] != arr2[i]) { return 0; } } return 1; } int main() { char arr1[] = { "AABCD" }; char arr2[] = { "BCDAA" }; int len = strlen(arr1); //旋轉字串 LeftMove(arr1); //比較字串是否相等 printf("%d\n", Exchange(arr1, arr2)); system("pause"); return 0; }
執行結果:
不等: 相等: