我們用乙個特殊的字串 s 來表示乙份單詞列表,之所以能展開成為乙個列表,是因為這個字串 s 中存在乙個叫做「選項」的概念:
單詞中的每個字母可能只有乙個選項或存在多個備選項。
如果只有乙個選項,那麼該字母按原樣表示。
如果存在多個選項,就會以花括號包裹來表示這些選項(使它們與其他字母分隔開),例如""
表示["a", "b", "c"]
。
例子:"d"
可以表示單詞列表["ade", "adf", "bde", "bdf", "cde", "cdf"]
。
請你按字典順序,返回所有以這種方式形成的單詞。
示例 1:
輸入:"cf"
輸出:[
"acdf"
,"acef"
,"bcdf"
,"bcef"
]示例 2:
輸入:"abcd"
輸出:[
"abcd"]
1<= s.length <=
50你可以假設題目中不存在巢狀的花括號
在一對連續的花括號(開花括號與閉花括號)之間的所有字母都不會相同
class
solution'||
(s[i]
==''
) count++
;sort
(t.begin()
, t.
end())
; str.
push_back
(t);
t.clear()
;}}if
(!t.
empty()
)if(count ==0)
return
;//沒有花括號,直接返回
dfs(str,"",
0);return ans;
}void
dfs(vectorchar
>>
& str, string s,
int i)
for(
int j =
0; j < str[i]
.size()
;++j)
dfs(str, s+str[i]
[j], i+1)
;}};
8 ms 8.2 mb
我的csdn部落格位址
leetcode1087 字母切換
我們用乙個特殊的字串 s 來表示乙份單詞列表,之所以能展開成為乙個列表,是因為這個字串 s 中存在乙個叫做 選項 的概念 單詞中的每個字母可能只有乙個選項或存在多個備選項。如果只有乙個選項,那麼該字母按原樣表示。如果存在多個選項,就會以花括號包裹來表示這些選項 使它們與其他字母分隔開 例如 表示 a...
LeetCode(242 字母異構)
如題 看上去很簡單,但是有點蛋疼。直接的做法是什麼,遍歷s,對應的取每一位字元然後對應從t中刪除相同的字元,直觀的實現 public static boolean isanagram string s,string t for int i 0 i但是,很蛋疼的是,時間超限了 另尋它法,s和t擁有相同...
leetcode 49 字母異位
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。通過次數80,334提交次數129,632 思路 還是...