LeetCode791 自定義字串排序

2021-09-29 22:11:52 字數 1808 閱讀 9133

sandtare strings composed of lowercase letters. ins, no letter occurs more than once.

swas sorted in some custom order previously. we want to permute the characters oftso that they match the order thatswas sorted. more specifically, ifxoccurs beforeyins, thenxshould occur beforeyin the returned string.

return any permutation oft(as a string) that satisfies this property.

example :

input:

s = "cba"

t = "abcd"

output: "cbad"

explanation:

note:

題目:字串st只包含小寫字元。在s中,所有字元只會出現一次。s已經根據某種規則進行了排序。我們要根據s中的字元順序對t進行排序。更具體地說,如果s中x在y之前出現,那麼返回的字串中x也應出現在y之前。返回任意一種符合條件的字串t

思路:參考解析sort。以s中元素出現的先後順序作為排序的依據,因此對s中的字元建立map陣列,map的value為字元的下標位置。同1122. relative sort array。

class

solution);

return t;}}

;

【注意】

使用lambda表示式時,對map/unordered_map需要使用引用,進行值捕獲時會編譯出錯。

sort

(t.begin()

, t.

end(),

[mp]

(char a,

char b)

);

solution.cpp: in lambda function:

line 9: char 66: error: passing 'const std::unordered_map' as 'this' argument discards qualifiers [-fpermissive]

sort(t.begin(

), t.end(

), [mp]

(char a, char b)

);

因為當捕獲為map/unordered_map的值時,lambda表示式會預設轉換為const map/const unordered_map,而mp[a]的操作是若a在mp中不存在,則預設插入,與const衝突。

參考:c++11 lambda表示式不能捕獲map/unordered_map值.

leetcode 791 自定義字串排序

題目描述 字串s和t只包含小寫字元。在s中,所有字元只會出現一次。s已經根據某種規則進行了排序。我們要根據s中的字元順序對t進行排序。更具體地說,如果s中x在y之前出現,那麼返回的字串中x也應出現在y之前。返回任意一種符合條件的字串t。示例 輸入 s cba t abcd 輸出 cbad 解釋 s中...

leetcode 791 自定義字串排序

字串s和 t 只包含小寫字元。在s中,所有字元只會出現一次。s 已經根據某種規則進行了排序。我們要根據s中的字元順序對t進行排序。更具體地說,如果s中x在y之前出現,那麼返回的字串中x也應出現在y之前。返回任意一種符合條件的字串t。示例 輸入 s cba t abcd 輸出 cbad 解釋 s 現了...

Leetcode 791 自定義字串排序

給定兩個字串order和s。order的所有單詞都是唯一的,並且以前按照一些自定義的順序排序。題目 對s的字元進行置換,使其與排序的order相匹配。更具體地說,如果在order中的字元x出現字元y之前,那麼在排列後的字串中,x也應該出現在y之前。返回 滿足這個性質的s的任意排列 示例 1 輸入 o...