字串比對(10分)
阿新 • • 發佈:2019-01-06
題目內容:
題目說起來很簡單,你會讀到兩個字串,每個字串佔據一行,每個字串的長度均小於10000字元,而且第一個字串的長度小於第二個字串的。你的程式要找出第一個字串在第二個字串中出現的位置,輸出這些位置,如果找不到,則輸出-1。
注意,第一個字元的位置是0。
注意,第一個字串在第二個字串中的位置可能不止一處。
注意,字串中可能含有空格。
注意,兩個字串的長度一定大於0。
輸入格式:
兩個字串,一行一個。
輸出格式:
第一個字串在第二個字串中出現的位置,按照從小到到的順序排列,每個數字後面有一個空格。
如果在第二個字串中找不到第一個字串,則輸出-1。
輸入樣例:
abba
ababbba abbabbabbabbaacc
輸出樣例:
8 11 14 17
時間限制:500ms記憶體限制:32000kb
關鍵點在於如何輸入帶有空格的字串。可以可以fgets。
#include <stdio.h>
char input1[100];//必須開全域性變數!不然會有意外情況。
char input2[100];
int main() {
char ch;
long l1 = 0;
long l2 = 0;
while ((ch = getchar()) != '\n') {//有空格字元的輸入
input1[l1++] = ch;
}
while ((ch = getchar()) != '\n' ) {
input2[l2++] = ch;
}
int flag = 0;
for (int i = 0; i < l2; i++) {
for (int h = 0; h < l1; h++) {
if (input1[h] != input2[i + h]) {
break;
}
if (h == l1 - 1) {
printf("%d ", i);
flag = 1 ;
}
}
}
if (!flag) {
printf("-1");
}
return 0;
}