Pagini recente » Cod sursa (job #634705) | Cod sursa (job #884255) | Cod sursa (job #768099) | Cod sursa (job #379101) | Cod sursa (job #1678477)
#include <stdio.h>
#include <string.h>
enum {
MAXPRINTS = 1000,
MAXLEN = 2000001
};
static char a[MAXLEN], b[MAXLEN];
static int alen, blen, matchno, matches[MAXLEN];
static void Read(void)
{
scanf("%s%s", a, b);
alen = (int)strlen(a);
blen = (int)strlen(b);
}
static void FindMatches(void)
{
int i;
for (i = 0; i <= blen - alen; ++i) {
if (a[0] == b[i] && a[alen - 1] == b[i + alen - 1]) {
if (memcmp(a, b + i, (unsigned)alen) == 0) {
matches[matchno++] = i;
}
}
}
}
static void Print(void)
{
int i;
printf("%i\n", matchno);
matchno = matchno > MAXPRINTS ? MAXPRINTS : matchno;
for (i = 0; i < matchno; ++i) {
printf("%i ", matches[i]);
}
printf("\n");
}
int main(void)
{
freopen("strmatch.in", "r", stdin);
freopen("strmatch.out", "w", stdout);
Read();
FindMatches();
Print();
return 0;
}