1.實現一個函式,可以左旋字串中的k個字元。 2.判斷一個字串是否為另外一個字串旋轉之後的字串。
阿新 • • 發佈:2018-12-09
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; }