【Leetcode】784.字母大小写全排列
题目:给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。
返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。
示例 1:
输入:s = "a1b2"
输出:["a1b2", "a1B2", "A1b2", "A1B2"]
示例 2:
输入: s = "3z4"
输出: ["3z4","3Z4"]
提示:
1 <= s.length <= 12s由小写英文字母、大写英文字母和数字组成
思想:依次遍历整个字符串,使用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/

浙公网安备 33010602011771号