切換
舊版
前往
大廳
主題

ZeroJudge - c929: 蝸牛老師的點名單-續 解題心得

Not In My Back Yard | 2019-03-20 12:46:51 | 巴幣 0 | 人氣 574

題目連結:


題目大意:
第一列、第二列分別給定一個字串(字元範圍為 ASCII 編碼的 32 ~ 126,且長度皆小於1, 000),第一個字串代表第二個字串的「分割單元」。

例:字串一為 AA ,字串二為 BAABAAURUSAI ,目標就是把字串二分為B、B、URUSAI三個字串,並各自輸出於一列(分別各佔一列,在此例總共佔 3 列)。



範例輸入:
範例一:
and
appleandbanana

範例二
,
baluteshih ,leo , alan


範例輸出:
範例一:
apple
banana

範例二:
baluteshih
leo
alan


解題思維:
Python、Java 等語言可以直接讀取一整列,然後再用 split() 函式直接秒殺這題。

C++ 、 C 之類的語言比較麻煩,要自己實作類似 split() 函式的功能。

用 getline() 把兩列的內容各自讀入並存進兩個字串後,我們便以迴圈去跑第二個字串的每一個字元,然後一直檢查從現在這個字元開始抓第一個字串長度個字元,這樣子的子字串是否等於第一個字串。如果等於,代表該分割了,因此把先前到上一次分割的內容擷取出來並輸出於一列;反之,繼續判斷直到結尾或是下一個分割。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作