1. 程式人生 > 其它 >【Leetcode】784.字母大小寫全排列

【Leetcode】784.字母大小寫全排列

題目:給定一個字串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/