s
andt
are strings composed of lowercase letters. ins
, no letter occurs more than once.
s
was sorted in some custom order previously. we want to permute the characters oft
so that they match the order thats
was sorted. more specifically, ifx
occurs beforey
ins
, thenx
should occur beforey
in the returned string.
return any permutation oft
(as a string) that satisfies this property.
example :
input:
s = "cba"
t = "abcd"
output: "cbad"
explanation:
note:
題目:字串s
和t
只包含小寫字元。在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...