<>题目1

字符串左旋
实现一个函数,可以左旋字符串中的k个字符。
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB

思路分析
创建一个临时变量用来存放字符串的第一个字符,利用for循环遍历字符串,实现将后一位赋值给前一位,最后将第一个字符赋值给最后一个元素即可。

<>代码实现
//实现一个函数,可以左旋字符串中的k个字符。 void leftturn(char* str,int length,int k) { //循环实现 字符左旋
for (int i = 0; i < k; i++) { int n = 0; //使用临时变量储存第一个字符 char tmp = str[0];
//遍历数组,实现将后一位赋值给前一位 for (int n = 0; n < length - 1; n++) { str[n] = str[n + 1];
} //实现第一字符赋值给最后一个元素 str[length-1] = tmp; } } int main() { char str[] = "abcd";
int length= strlen(str); int k = 0; printf("请输入左旋字符的个数:"); scanf("%d", &k);
printf("before:%s\n", str); leftturn(str,length,k); printf("after:%s\n", str);
system("pause"); return 0; }
代码过程分析

<>题目2

字符串旋转结果
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:
给定s1 =AABCD和s2 = BCDAA,返回1
给定s1=abcd和s2=ACBD,返回0.

思路分析

这道题在上一道题的基础上,增加了字符串旋转结果的判断,可以创建一个判定函数Judge,循环调用左旋和右旋函数,来判定每次循环结果的字符串是不是和str相等,若是我们要找的find,则返回1即可~

<>代码实现
//左旋k个字符函数 void leftTurn(char* str,int length,int k) { for (int i = 0; i < k; i
++) { int n = 0; char tmp = str[0]; for (int n = 0; n < length - 1; n++) { str[n
] = str[n + 1]; } str[length-1] = tmp; } } //右旋k个字符函数 void rightTurn(char* str,
int length, int k) { for (int i = 0; i < k; i++) { int n = 0; char tmp = str[0];
for (int n = 0; n < length - 1; n++) { str[n] = str[n + 1]; } str[length - 1] =
tmp; } } //比较 两字符串是否符合要求 int judge(char* str, char* find) { int length1 = strlen
(str); int length2 = strlen(find); //两个字符串长度不同,直接返回0 if (length1 != length2) {
return 0; } //使用循环 调用 左旋右旋函数,得到每一次变化的结果 for (int i = 0; i < length1; i++) {
leftTurn(str, length1, i); if (strcmp(str, find) == 0) { return 1; } rightTurn(
str, length1, i++); if (strcmp(str, find) == 0) { return 1; } } return 0; } int
main() { char s1[] = "AABDC"; char s2[] = "BCDAA"; printf("%s\n%s\n", s1, s2);
int ret=judge(s1, s2); printf("%d\n", ret); system("pause"); return 0; }
<>补充说明

调用strcmp函数,需要包含头文件<string.h>
strcmp函数的原型是:int strcmp(const char * str1,const char * str2)
strcmp是比较两个字符串是否相等,此函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续往下比对,直到字符不同或到达终止的空字符为止

返回值表示
<0第一个不匹配的字符在str1中的值比在str2中的值低
0两个字符串的内容相等
>0第一个不匹配的字符在str1中的值大于在str2中的值

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信