1181 前後拼接

2021-10-14 04:08:09 字數 2207 閱讀 8451

題目描述:

給你乙個「短語」列表 phrases,請你幫忙按規則生成拼接後的「新短語」列表。

「短語」(phrase)是僅由小寫英文本母和空格組成的字串。「短語」的開頭和結尾都不會出現空格,「短語」中的空格不會連續出現。

「前後拼接」(before and after puzzles)是合併兩個「短語」形成「新短語」的方法。我們規定拼接時,第乙個短語的最後乙個單詞 和 第二個短語的第乙個單詞 必須相同。

返回每兩個「短語」 phrases[i] 和 phrases[j](i != j)進行「前後拼接」得到的「新短語」。

注意,兩個「短語」拼接時的順序也很重要,我們需要同時考慮這兩個「短語」。另外,同乙個「短語」可以多次參與拼接,但「新短語」不能再參與拼接。

請你按字典序排列並返回「新短語」列表,列表中的字串應該是 不重複的 。

示例 1:

輸入:phrases = [「writing code」,「code rocks」]

輸出:[「writing code rocks」]

示例 2:

輸入:phrases = [「mission statement」,

「a quick bite to eat」,

「a chip off the old block」,

「chocolate bar」,

「mission impossible」,

「a man on a mission」,

「block party」,

「eat my words」,

「bar of soap」]

輸出:[「a chip off the old block party」,

「a man on a mission impossible」,

「a man on a mission statement」,

「a quick bite to eat my words」,

「chocolate bar of soap」]

示例 3:

輸入:phrases = [「a」,「b」,「a」]

輸出:[「a」]

1 <= phrases.length <= 100

1 <= phrases[i].length <= 100

通過次數1,266提交次數3,525

方法1:

(1)使用雜湊來快速確定每個字串的首個單詞和最後乙個單詞;

(2)使用set來去除重複的拼接字串;

(3)先對每個字串進行分解,找出首個單詞和最後乙個單詞,和對應的字串的索引一起儲存到對應的雜湊中;

(4)遍歷儲存最後乙個單詞的雜湊,找每個元素的字串是否在儲存第乙個單詞的雜湊中存在,若存在則生成對應的字串,儲存到set中來去重;

class

solution

mp_front[str.

substr(0

,pos)].

push_back

(index)

;//將當前字串的第一單詞和對應的索引儲存到對應的雜湊中

//找出最後乙個單詞

pos=str.

size()

-1;while

(pos>=

0&&str[pos]

!=' '

) mp_back[str.

substr

(pos+1)

].push_back

(index)

;//將當前字串的最後乙個單詞和對應的索引儲存到對應的雜湊中

++index;

} set st;

//儲存拼接生成的字串,可以實現去重

//遍歷儲存最後乙個單詞的雜湊

for(

auto

& it:mp_back)

st.insert

(phrases[i]

+phrases[j]

.substr

(it.first.

size()

));}

}}}return vector

(st.

begin()

,st.

end())

;//返回結果}}

;

1181 整數奇偶排序

時間限制 1000 ms 記憶體限制 65536 kb 提交數 2427 通過數 1383 給定10個整數的序列,要求對其重新排序。排序要求 1.奇數在前,偶數在後 2.奇數按從大到小排序 3.偶數按從小到大排序。輸入一行,包含10個整數,彼此以乙個空格分開,每個整數的範圍是大於等於0,小於等於10...

1181 變形課 深度搜尋

problem description 呃.變形課上harry碰到了一點小麻煩,因為他並不像hermione那樣能夠記住所有的咒語而隨意的將乙個棒球變成刺蝟什麼的,但是他發現了變形咒語的乙個統一規律 如果咒語是以a開頭b結尾的乙個單詞,那麼它的作用就恰好是使a物體變成b物體.harry已經將他所會的...

1181 字元排序

字元排序 給定乙個字串str和兩個字元a,b,將str中ascii碼處於a,b之間 含a b 的字元按ascii碼從大到小排序,其他字元位置不變.輸出排序後的字串。輸入只有兩行 第一行給出乙個字串str 第二行給出兩個字元a,b,以乙個空格間隔 字串長度不大於3000。輸出只有一行,給出排序後的字串...