当前位置:网站首页>【每日一题】写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
【每日一题】写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
2022-07-02 06:12:00 【谢西山】
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1 =AABCD和s2 = BCDAA,返回1
给定s1=abcd和s2=ACBD,返回0.
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC
方案一
分析:s1旋转一次为ABCDA,和s2比较,调用strcmp,返回值等于0 的值,则说明是s2是s1旋转得到的,否则继续在ABCDA的基础上再旋转一次,得到BCDAA,和s2比较,调用strcmp,返回值等于0 的值,则说明是s2是s1旋转得到的,继续循环,直到循环5次,或着在循环中碰到正好s1=s2,那么说明,s2是s1旋转得到的。
# define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int judge(char* s1, char* s2,int len)
{
//先旋转一个字符
for (int i = 1; i <= len; ++i)
{
//i为1时第一次旋转
char tem = *s1;
int j=0;
for (j = 0; j < len; ++j)
{
*(s1 + j) = *(s1 + j + 1);
}
*(s1+j) = tem;//将刚才取出的值放到最后一个元素
if (strcmp(s1, s2) == 0)
{
return 1;
}
}
}
int main()
{
char s1[] = "AABCD";
char s2[] = "BCDAA";
int len = strlen(s1);
if (judge(s1,s2,len))
printf("Fing it");
else
printf("No find");
return 0;
}
方案2
使用函数strcat组成新的字符串s3,AABCDAABCD,用s2来遍历比较函数是否为s1的子函数,若是则s2是s1旋转得到的。
strncat 函数
Append characters of a string.
char *strncat(char *strDest,constchar *strSource,size_tcount);
# define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int FlipCheck(char* arr1, char* arr2)
{
if (strlen(arr1) != strlen(arr2))//如果两个字符串长度不相等,那么不用比较都直到不是旋转所得。
return 0;
strncat(arr1, arr1, strlen(arr1));//append a string
return strstr(arr1, arr2) != NULL;//查找子字符串,找到则返回值为非0
}
int main()
{
char arr1[20] = "AABCD";
char arr2[10] = "BCDAA";
if (FlipCheck(arr1, arr2))
printf("Find it");
else
printf("NO Find");
return 0;
}
我发了讲解视频,在评论区,自己去看
今日垃圾话:那个公司又叫我了,啊啊啊
边栏推荐
- Shenji Bailian 3.53-kruskal
- Invalid operation: Load into table ‘sources_ orderdata‘ failed. Check ‘stl_ load_ errors‘ system table
- Unity shader learning notes (3) URP rendering pipeline shaded PBR shader template (ASE optimized version)
- 链表(线性结构)
- Reading classic literature -- Suma++
- LeetCode 27. Removing Elements
- LeetCode 39. Combined sum
- Deep learning classification network -- vggnet
- Redis---1.数据结构特点与操作
- Database learning summary 5
猜你喜欢
随机推荐
Scheme and implementation of automatic renewal of token expiration
Mock simulate the background return data with mockjs
Redis---1.数据结构特点与操作
Shenji Bailian 3.54-dichotomy of dyeing judgment
Web page user step-by-step operation guide plug-in driver js
Shenji Bailian 3.53-kruskal
Use some common functions of hbuilderx
How to use mitmproxy
Codeforces Round #797 (Div. 3) A—E
如何使用MITMPROXy
数据回放伴侣Rviz+plotjuggler
浏览器原理思维导图
LeetCode 90. Subset II
Golang--map扩容机制(含源码)
浅谈三点建议为所有已经毕业和终将毕业的同学
Brain and cognitive neuroscience matlab psychoolbox cognitive science experimental design - experimental design 4
社区说|Kotlin Flow 的原理与设计哲学
LeetCode 27. 移除元素
BGP 路由优选规则和通告原则
锐捷EBGP 配置案例