784.字母大小写全排列(C语言)

题目详情
给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。

示例:
输入: S = “a1b2”
输出: [“a1b2”, “a1B2”, “A1b2”, “A1B2”]

输入: S = “3z4”
输出: [“3z4”, “3Z4”]

输入: S = “12345”
输出: [“12345”]

注意:

  • S的长度不超过12.
  • S仅由数字和字母组成。

-下面代码

#define MAXSIZE 4500
void REpermutation_str(char *s, char **p, int pos, int len, int *nt) //pos 代表position 
{
     if(pos==len){
      p[*nt] = (char *)malloc((len+1)*sizeof(char));
      *(p[*nt]+len)='\0';
      strcpy(p[*nt],s);
      (*nt)++;
      return ;
    }
 
     if(s[pos]>='A'&&s[pos]<='Z'){
  
      REpermutation_str(s,p,pos+1,len,nt);
      s[pos]=s[pos]+32;
      REpermutation_str(s,p,pos+1,len,nt);
  
     }else if(s[pos]>='a'&&s[pos]<='z'){
  
      REpermutation_str(s,p,pos+1,len,nt);
      s[pos]=s[pos]-32;
      REpermutation_str(s,p,pos+1,len,nt);
  
     }else{ //否则为数字字符 
      REpermutation_str(s,p,pos+1,len,nt);
     }
     return ;
}

char ** letterCasePermutation(char * S, int* returnSize){
     char **p = (char **)malloc(MAXSIZE*sizeof(char *));
     int *nt = (int *)malloc(sizeof(int));
     *nt=0;
     REpermutation_str(S,p,0,strlen(S),nt);
 
     *returnSize=*nt; //返回的是所有符合条件的字符串的个数 
     return p;
}

你可能感兴趣的:(LeetCode-解题记录)