中等
相关标签
相关企业
给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main(void) {
char o[4]={};
int cb(char i,char *q){
int n=0;
if(i=='2'){
memcpy(q,"abc",3);
n=3;
goto aa;
}
if(i=='3'){
memcpy(q,"def",3);
n=3;
goto aa;
}
if(i=='4'){
memcpy(q,"ghi",3);
n=3;
goto aa;
}
if(i=='5'){
memcpy(q,"jkl",3);
n=3;
goto aa;
}
if(i=='6'){
memcpy(q,"mno",3);
n=3;
goto aa;
}
if(i=='7'){
memcpy(q,"pqrs",4);
n=4;
goto aa;
}
if(i=='8'){
memcpy(q,"tuv",3);
n=3;
goto aa;
}
if(i=='9'){
memcpy(q,"wxyz",4);
n=4;
goto aa;
}
if(i==' '){
memcpy(q,"",1);
n=1;
goto aa;
}
aa: return n;
}
//-------------------------------
char in[]="23";
int len=strlen(in);
if(len==1){
char z=in[0];
for(int a=0;a<cb(z,o);a++){
printf("%c ,",o[a]);
}
}
if(len==2){
char a1=in[0];
char a2=in[1];
char s1[4]={};
char s2[4]={};
int n1=cb(a1,s1);
int n2=cb(a2,s2);
for(int a=0;a<n1;a++){
for(int b=0;b<n2;b++){
printf("%c %c ;",s1[a],s2[b]); //a d ;a e ;a f ;b d ;b e ;b f ;c d ;c e ;c f
}
}
}
return 0;
}