题目说起来很简单,你会读到两个字符串,每个字符串占据一行,每个字符串的长度均小于10000字符,而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些位置,如果找不到,则输出-1。
注意,第一个字符的位置是0。第一个字符串在第二个字符串中的位置可能不止一处。字符串中可能含有空格。两个字符串的长度一定大于0。
两个字符串,一行一个。
第一个字符串在第二个字符串中出现的位置,按照从小到到的顺序排列,每个数字后面有一个空格。
如果在第二个字符串中找不到第一个字符串,则输出-1。
abba
ababbba abbabbabbabbaacc
8 11 14 17
#include <stdio.h>
#include <string.h>
int main(){
char A[10000],B[10010];
gets(A);
gets(B);
int sign=0,al=strlen(A),bl=strlen(B);
for(int i=0;i<bl;i++){
for(int k=0;k<al;k++){
if(A[k]!=B[i+k])
break;
if(k==al-1){ //k=0~al-1 时,程序都没有跳出循环
sign=1; //说明:找到了第一个字符串
printf("%d ",i);
}
}
}
if(!sign)
printf("-1");
return 0;
}
原文:https://www.cnblogs.com/NTyee/p/12897667.html