【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数组复制一份,用于保存当前字母的大小写两种情况,分别将当前字母大写和小写追加到数组后面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 @   梦想是能睡八小时的猪  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示