typedef struct{
char num;
int clen;
char c[5];
}HASH;
HASH shuzu[10]={
'0',0,"",
'1',0,"",
'2',3,"abc",
'3',3,"def",
'4',3,"ghi",
'5',3,"jkl",
'6',3,"mno",
'7',4,"pqrs",
'8',3,"tuv",
'9',4,"wxyz",
};
int fanhui(char*digits)
{
int res=1;
for(int i=0;i<strlen(digits);i++)
{
res=res*shuzu[digits[i]-'0'].clen;
}
return res;
}
char ** letterCombinations(char * digits, int* returnSize){
if(strlen(digits)==0)
{
*returnSize=0;
return NULL;
}
*returnSize=fanhui(digits);
char **re=(char**)malloc(sizeof(char*)*(*returnSize));
int len=strlen(digits);
int l=*returnSize;
for(int i=0;i<len;i++)
{
int k=shuzu[digits[i]-'0'].clen;
l=l/k;
for(int j=0;j<*returnSize;j++)
{
if(i==0)
{
re[j]=(char*)malloc(sizeof(char)*(len+1));
re[j][len]='\0';
}
re[j][i]=shuzu[digits[i]-'0'].c[j/l%k];
}
}
return re;
}
力扣.17.电话号码的字母组合(C语言)
最新推荐文章于 2024-03-22 20:50:15 发布
该代码定义了一个结构体HASH,用于存储数字对应的字母组合。函数fanhui计算给定数字字符串的可能字母组合数,letterCombinations函数生成这些组合。程序利用动态规划策略,为每个数字分配对应的字母并构建组合。
摘要由CSDN通过智能技术生成