【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/

posted @ 2022-02-22 16:14  梦想是能睡八小时的猪  阅读(47)  评论(0)    收藏  举报