Algorithm I 筆記撰寫計畫 第十一天第三題,總共有三題。
- 難度:
Medium
- 花費時間:
2 hr
- 題目: 784. Letter Case Permutation
給你一個字串 s
回傳 s
裡所有字母都有大寫跟小寫兩種寫法的話,會有幾種可能的字串,把全部字串放在一個陣列裡回傳。
點我開啟限制與範例
限制:
1 <= s.length <= 12
s
consists of lowercase English letters, uppercase English letters, and digits.
Example 1:
1 | Input: s = "a1b2" |
Example 2:
1 | Input: s = "3z4" |
點我開啟思路
思路
建立一個 index i = 0
建立一個 s 的 陣列 = sArr
-
終止條件
若 i == sArr.length 回傳當前的 sArr -
檢查 sArr[i]
- 若是數字 直接遞迴 i + 1
- 若是字母
遞迴 sArr[i] 大寫跟小寫各一次
筆記
雖然這題被放在 Backtracking
裡,但我沒有什麼感覺,這題我選擇用 DFS
來作答。
遍歷字串,只會遇到兩種狀況
- 遇到數字
- 遇到字母
當我們遇到數字時,就直接再更深入一層(檢查下一個字元)。
當我們遇到字母時,就把那個字母分別轉為大寫跟小寫,然後分別更深入一層。
最後我們拿滿 s
大小時,就把答案傳出來。
程式
function letterCasePermutation(s: string): string[] { |
成績
;