实现一个函数,可以左旋字符串中的k个字符
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<time.h>
void dev(char a[], int k) {
int n = 0;
char* tmp = (char*)calloc(strlen(a)+1 , sizeof(char));
for (int i = k; a[i] != '\0'; ++i) {
tmp[n] = a[i];
++n;
}
for (int j = 0; j < k; ++j, ++n) {
tmp[n] = a[j];
}
for (int j = 0; j < n + 1; ++j) {
a[j] = tmp[j];
}
free(tmp);
}
int main() {
char a[] = "ABCDEFGH";
int k;
printf("左旋几个字符:");
scanf("%d", &k);
dev(a, k);
puts(a);
system("pause");
}
判断一个字符串是否为另外一个字符串旋转之后的字符串。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<time.h>
int find(char* a,char* b){
char* tmp = (char*)calloc(strlen(a) * 2 + 1 ,sizeof(char));
strcpy(tmp, a);
strcat(tmp, a);
if (strstr(tmp, b)) {
free(tmp);
return 1;
}
else {
free(tmp);
return 0;
}
}
int main() {
char a[] = "ABCDE";
char b[] = "BCDEA";
if (find(a, b)) {
printf("找到了!\n");
}
else {
printf("没找到!\n");
}
system("pause");
}