leetcode500键盘行(c语言实现)


 


 

源代码:

/**
 * Return an array of size *returnSize.
 * Note: The returned array must be malloced, assume caller calls free().
 */
int which(char ch)
{
    if(ch=='q'||ch=='w'||ch=='e'||ch=='r'||ch=='t'||ch=='y'||ch=='u'||ch=='i'||ch=='o'||ch=='p'||ch=='Q'||ch=='W'||ch=='E'||ch=='R'||ch=='T'||ch=='Y'||ch=='U'||ch=='I'||ch=='O'||ch=='P')
        return 1;
 else if(ch=='a'||ch=='s'||ch=='d'||ch=='f'||ch=='g'||ch=='h'||ch=='j'||ch=='k'||ch=='l'||ch=='A'||ch=='S'||ch=='D'||ch=='F'||ch=='G'||ch=='H'||ch=='J'||ch=='K'||ch=='L')
     return 2;
 else if(ch=='z'||ch=='x'||ch=='c'||ch=='v'||ch=='b'||ch=='n'||ch=='m'||ch=='Z'||ch=='X'||ch=='C'||ch=='V'||ch=='B'||ch=='N'||ch=='M')
     return 3;
 else return 0;
}

char** findWords(char** words, int wordsSize, int* returnSize) {
    char** ret=(char**)malloc(wordsSize*sizeof(char*));
    int i,j,k;
    int length;
    int flag=0;
    int current;
    char *word;
    for(i=0,k=0;i<wordsSize;i++)
    {
        flag=0;
        word=words[i];
        length=strlen(word);
        current=which(words[i][0]);
        for(j=1;j<length;j++)
        {
            if(current!=which(words[i][j]))
            {
                flag=1;
                break;
            }
        }
        
        if(flag==0)
        {
            ret[k]=(char*)malloc((length+1)*(sizeof(char)));//因为要加\0所以是length+1
            for(j=0;j<length;j++)
            {
                ret[k][j]=words[i][j];
            }
            ret[k][j]='\0'; //一定要在字符数组最后加\0使其结束
            k++;
        }
        
    }
    
    (*returnSize)=k;//是k不是k+1!!!
    
    return ret;
}

可在本地运行调试的C语言程序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int which(char ch)
{
    if(ch=='q'||ch=='w'||ch=='e'||ch=='r'||ch=='t'||ch=='y'||ch=='u'||ch=='i'||ch=='o'||ch=='p'||ch=='Q'||ch=='W'||ch=='E'||ch=='R'||ch=='T'||ch=='Y'||ch=='U'||ch=='I'||ch=='O'||ch=='P')
        return 1;
 else if(ch=='a'||ch=='s'||ch=='d'||ch=='f'||ch=='g'||ch=='h'||ch=='j'||ch=='k'||ch=='l'||ch=='A'||ch=='S'||ch=='D'||ch=='F'||ch=='G'||ch=='H'||ch=='J'||ch=='K'||ch=='L')
     return 2;
 else if(ch=='z'||ch=='x'||ch=='c'||ch=='v'||ch=='b'||ch=='n'||ch=='m'||ch=='Z'||ch=='X'||ch=='C'||ch=='V'||ch=='B'||ch=='N'||ch=='M')
     return 3;
 else return 0;
}

char** findWords(char** words, int wordsSize, int* returnSize) {
    char** ret=(char**)malloc(wordsSize*sizeof(char*));
    int i,j,k;
    int length;
    int flag=0;
    int current;
    char *word;
    for(i=0,k=0;i<wordsSize;i++)
    {
        flag=0;
        word=words[i];
        length=strlen(word);
        current=which(words[i][0]);
        for(j=1;j<length;j++)
        {
            if(current!=which(words[i][j]))
            {
                flag=1;
                break;
            }
        }
        
        if(flag==0)
        {
            ret[k]=(char*)malloc((length+1)*(sizeof(char)));
            for(j=0;j<length;j++)
            {
                ret[k][j]=words[i][j];
            }
            ret[k][j]='\0'; 
            k++;
        }
        
    }
    
    (*returnSize)=k;
    
    return ret;
}

int main()
{
	char *c[4]={"Hello", "Alaska", "Dad", "Peace"};
	char **cc;
	cc=c; 
	int returnsize;
	char** ch;
	int i,j;
	ch=findWords(c,4, &returnsize);
	for(i=0;i<returnsize;i++)
	{
		for(j=0;j<strlen(ch[i]);j++)
		  printf("%c",ch[i][j]);
		  
		printf("\n");
	 } 
}

猜你喜欢

转载自blog.csdn.net/qq_35706707/article/details/88706549
今日推荐