題目連結:
題目大意:
輸入有多列,每列給定一個中文句子。將一個句子的賓語提前,也就是將「之」或是「是」左右兩邊的句子交換,然後輸出。
範例輸入:
馬首是瞻
句讀之不知
惑之不解
範例輸出:
瞻馬首
不知句讀
不解惑
解題思維:
因為 ZeroJudge 上的中文編碼(UTF-8)佔 3 個位元組,所以存成一個字串時,需要一塊一塊地比對(每塊 3 個位元組)。
當比到有一塊與「是」或是「之」的編碼相同時,就先輸出其右邊的位元組直至尾端,再輸出其左邊的位元組直到開頭,即完成交換。
而在本地端測試時,可能因為編碼不同,而造成一塊的位元組數量為 2 位元組(例如 Unicode 或 Big5)。可以在測試的時候將上面的判斷變為 2 位元組,但是傳上去 ZeroJudge 記得改回 3 位元組。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。