題目提及來很簡單,你會讀到兩個字符串,每一個字符串佔據一行,每一個字符串的長度均小於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; }