切換
舊版
前往
大廳
主題

ZeroJudge - e570: 賓語提前 解題心得

Not In My Back Yard | 2020-09-29 00:02:29 | 巴幣 2 | 人氣 219

題目連結:


題目大意:
輸入有多列,每列給定一個中文句子。將一個句子的賓語提前,也就是將「之」或是「是」左右兩邊的句子交換,然後輸出。



範例輸入:
馬首是瞻
句讀之不知
惑之不解


範例輸出:
瞻馬首
不知句讀
不解惑


解題思維:
因為 ZeroJudge 上的中文編碼(UTF-8)佔 3 個位元組,所以存成一個字串時,需要一塊一塊地比對(每塊 3 個位元組)。

當比到有一塊與「是」或是「之」的編碼相同時,就先輸出其右邊的位元組直至尾端,再輸出其左邊的位元組直到開頭,即完成交換。

而在本地端測試時,可能因為編碼不同,而造成一塊的位元組數量為 2 位元組(例如 Unicode 或 Big5)。可以在測試的時候將上面的判斷變為 2 位元組,但是傳上去 ZeroJudge 記得改回 3 位元組。




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

創作回應

更多創作