/*
从键盘上输入二个定长串s1与s2,试编写一个算法
判断s1是否是s2的子串,如果是则输出1否则输出0
*/
# include <iostream>
# include <stdlib.h>
# include <stdio.h>
using namespace std;
const int maxn = 100 + 10;
typedef char sstring[maxn];
void createstring(sstring s, char* str)
{
s[0] = strlen(str);
for(int i= 1; i<=s[0]; i++)
{
s[i] = str[i-1];
}
}
void printstring(sstring s)
{
for(int i = 1; i<=s[0]; i++)
{
printf("%c ", s[i]);
}
printf("\n");
}
bool sstring_match(sstring s1, sstring s2)
{
int i, j;
i = j = 1;
while(i <= s1[0] && j<=s2[0])
{
if(s1[i] == s2[j])
{
i++;
j++;
}
else
{
i = i - j + 2;
j = 1;
}
}
if(j<s2[0])
return true;
else
return false;
}
int main()
{
char str1[maxn], str2[maxn];
sstring s1, s2;
printf("请创建第一个定长串s1:\n");
scanf("%s", str1);
getchar();
printf("请创建第二个定长串s2:\n");
scanf("%s", str2);
createstring(s1, str1);
createstring(s2, str2);
bool is_sstring_match = sstring_match(s1, s2);
if(is_sstring_match)
printf("1\n");
else
printf("0\n");
return 0;
}