【Leetcode】784.字母大小寫全排列
阿新 • • 發佈:2022-02-22
題目:給定一個字串s
,通過將字串s
中的每個字母轉變大小寫,我們可以獲得一個新的字串。
返回所有可能得到的字串集合。以任意順序返回輸出。
示例 1:
輸入:s = "a1b2"
輸出:["a1b2", "a1B2", "A1b2", "A1B2"]
示例 2:
輸入: s = "3z4"
輸出: ["3z4","3Z4"]
提示:
1 <= s.length <= 12
s
由小寫英文字母、大寫英文字母和數字組成
思想:依次遍歷整個字串,使用res的string切片來儲存結果,根據不同情況給出不同的處理:
1.如果遍歷到的是數字的話,則直接追加到res陣列的每一個string元素後面。
2.如果遍歷到的是字母的話,無論大小寫,將當前遍歷的res陣列複製一份,用於儲存當前字母的大小寫兩種情況,分別將當前字母大寫和小寫追加到陣列後面。
unc letterCasePermutation(s string) []string { res := []string{""} for v,_ := range s{ if s[v] >='a'&&s[v]<='z'|| s[v] >='A'&&s[v] <='Z'{ temp :=make([]string,len(res)) copy(temp,res) for i:=0;i<len(res);i++{ res[i] = res[i] + strings.ToUpper(string([]byte{s[v]})) temp[i] = temp[i] + strings.ToLower(string([]byte{s[v]})) } res = append(res,temp...) }else { for i:=0;i<len(res);i++{ res[i] = res[i] + string([]byte{s[v]}) } } } return res }
題目來源:https://leetcode-cn.com/problems/letter-case-permutation/