784、字母大小写全排列
给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。
返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。
实例1:
输入:s = "a1b2"
输出:["a1b2", "a1B2", "A1b2", "A1B2"]
实例2:
输入: s = "3z4"
输出: ["3z4","3Z4"]
思路:遍历字符串,对于每个字符进行判断
1、如果是数字,则直接拼接到每一个结果字符串后面
2、如果是字母,则每一个结果拼接一个大写字母和一个小写字母
这里对于数字和字符串的判断取了个巧,如果字符的大小写相等就认为是数字,否则为字母
/**
* @param {string} s
* @return {string[]}
*/
var letterCasePermutation = function(s) {
if (!s.length) return []
let res = ['']
s.split('').forEach(ch => {
let up = ch.toUpperCase()
let lower = ch.toLowerCase()
if (up == lower) {
res = res.map(item => item + lower)
} else {
res = [
...res.map(item => item + up),
...res.map(item => item + lower)
]
}
})
return res
}