784. 字母大小写全排列
难度中等383收藏分享切换为英文接收动态反馈
给定一个字符串 s
,通过将字符串 s
中的每个字母转变大小写,我们可以获得一个新的字符串。
返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。
示例 1:
输入:s = "a1b2" 输出:["a1b2", "a1B2", "A1b2", "A1B2"]
示例 2:
输入: s = "3z4" 输出: ["3z4","3Z4"]
提示:
1 <= s.length <= 12
s
由小写英文字母、大写英文字母和数字组成
通过次数63,815提交次数91,249
题解:看注释,如果题目给出的测试用例更加常一些,可能要考虑大数如何表示
class Solution {
string AlphaChangedBynum(unsigned short num,string s)
{
for(int i=s.size()-1;i>=0;i--)
{
if((num&0x01)==1)
{
s[i]=toupper(s[i]);
}
else
{
s[i]=tolower(s[i]);
}
num >>=1;
}
return s;
}
public:
vector letterCasePermutation(string s) {
// 这道题目因为字母只有大小写的模式,而且字符串长度只有12位置,组合是有限制的
// 组合最大不过0x0FFF个,所以可以使用一个unsigned short数字的低12位表示当前字符是大写还是小写
vector ans;
unsigned short alphaCnt=0;
string alphaVec;
for(auto i:s)
{
if(isalpha(i))
{
alphaCnt++;
alphaVec+=tolower(i);
}
}
for(unsigned short i=0;i
执行结果:
通过
显示详情
添加备注
执行用时:4 ms, 在所有 C++ 提交中击败了89.23%的用户
内存消耗:9.3 MB, 在所有 C++ 提交中击败了90.25%的用户
通过测试用例:63 / 63
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)