首页 > 其他 > 详细

LeetCode 290. 单词规律

时间:2020-03-01 23:01:27      阅读:80      评论:0      收藏:0      [点我收藏+]

首先看pattern中字母的个数与str中单词的个数是否相等。如果不相等则直接返回0,如果相等则建立哈希映射,

每个字母对应一个不同的单词。 对于pattern和str相同位置上的单词和字母有以下判断:

1如何字母上还没有值,则与str上对应单词联系起来,进入下一位置

2如过字母上已经有值,且就是当前位置单词,此时还需做一个内部判断这个值是否已在其他键上已存在,如果有,则返回0(例如 abba, dog,dog,dog),如果没有,进入下一位置。

3如果字母上已经有值,但不是当前位置上的单词,则返回0. 代码如下:

 

#include<malloc.h>
#include<stdio.h>
#include<string.h>
bool wordPattern(char * pattern, char * str){
    int len1 = strlen(pattern);
    int len2=0;
    int i,j,k;
    i=j=k=0;
    char temp[200];
    char * words[26];
    for(i=0;i<26;i++)
    {
        words[i]=(char *)malloc(sizeof(char)*200);
        words[i][0]=\0;
    }

    i=0;
    while(str[i]!=\0)
    {
       if (str[i]== )
            len2++;
        i++;
    }
    len2++;

    if(len1!=len2)
        return 0;
    
    i=0;
    while(str[i]!=\0)
    {
        int j=0;
        while(str[i]!= &&str[i]!=\0)
        {
            temp[j++]=str[i++];           
        }
        temp[j]=\0;
        if(words[pattern[k]-96][0]==\0)
        {
            for(int t=0;t<26;t++)
            {
                if(strcmp(temp,words[t])==0&&t!=pattern[k]-96)
                    return 0;
            }
            strcpy(words[pattern[k]-96],temp);
        }
        else if(strcmp(words[pattern[k]-96],temp)==0);
        else 
             return 0;        
        if(str[i]==\0)
            return 1;
        else
            i++;
            k++;
    }
    return 1;
}

 

LeetCode 290. 单词规律

原文:https://www.cnblogs.com/wzmm/p/12392578.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!