1. 程式人生 > >字串比對(10分)

字串比對(10分)

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