字符串比对(10分)

字符串比对(10分)

题目内容:

题目说起来很简单,你会读到两个字符串,每个字符串占据一行,每个字符串的长度均小于10000字符,而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些位置,如果找不到,则输出-1。

注意,第一个字符的位置是0。

注意,第一个字符串在第二个字符串中的位置可能不止一处。

注意,字符串中可能含有空格。

注意,两个字符串的长度一定大于0。

输入格式:

两个字符串,一行一个。

输出格式:

第一个字符串在第二个字符串中出现的位置,按照从小到到的顺序排列,每个数字后面有一个空格。

如果在第二个字符串中找不到第一个字符串,则输出-1。

输入样例:

abba

ababbba abbabbabbabbaacc

输出样例:

8 11 14 17

时间限制:500ms内存限制:32000kb

#include<stdio.h>
#include<string.h>

int main(int argc, char const *argv[])
{
    char c;
    int i = 0;
    char str[1000] = {'\0'};
    char dest[100] = {'\0'};
    char *q = 0;
    char *p = 0;
    int b = 1;

    while((c = getchar())!='\n'){
        dest[i] = c;
        i++;
    }
    i=0;
    
    while((c = getchar())!='\n'){
        str[i] = c;
        i++;
    }

    p = str;
    while((q = strstr(p,dest))!=NULL){ //strstr函数返回大字符串中的地址
        char a=*q; //剪切后的字符串
        *q = '\0';  //切断str
        printf("%d ",strlen(str));
        *q = a;
        p = q+1;
        b=0;
    }
    if(b) printf("-1");
    return 0;
}

参考资料:https://www.cnblogs.com/bcd589/p/6158857.html

猜你喜欢

转载自blog.csdn.net/DedicateToAI/article/details/81211014