题目提及来很简单,你会读到两个字符串,每一个字符串占据一行,每一个字符串的长度均小于10000字符,并且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些位置,若是找不到,则输出-1。
注意,第一个字符的位置是0。第一个字符串在第二个字符串中的位置可能不止一处。字符串中可能含有空格。两个字符串的长度必定大于0。code
两个字符串,一行一个。字符串
第一个字符串在第二个字符串中出现的位置,按照从小到到的顺序排列,每一个数字后面有一个空格。
若是在第二个字符串中找不到第一个字符串,则输出-1。get
abba
ababbba abbabbabbabbaaccstring
8 11 14 17io
#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; }