T1117 字符串移位包含问题
对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。
给定两个字符串 s1和 s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。
输入格式
一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过 30。
输出格式
如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出"true",否则输出"false"。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
AABCD CDAA
样例输出
true
解题思路: 见代码
#include<stdio.h>
#include<string.h>
int s=0,z;
char S1[32],S2[32];
void Cyclic_shift(char S[]){
int i,k;
k=strlen(S);
S[k]=S[0]; //手动将第一个元素复制到最后的多出来的字符元素中
for (i=0;i<=k;i++){
S[i]=S[i+1]; //将字符串中的字符数组元素按顺序复制到下一个字符数组元素中
}
S[k]='\0'; //将末尾手动添加结束字符
s++; /

探讨了如何通过循环移位操作,判断一个字符串是否能成为另一字符串的子串。利用C语言实现,包括字符串移位函数、子串判断函数等关键部分。
最低0.47元/天 解锁文章
1362

被折叠的 条评论
为什么被折叠?



