【leetcode】】单词规律

bool wordPattern(char * pattern, char * str){
    char **hash = (char **)malloc(26 * sizeof(char*));
    for (int i = 0; i < 26; ++i)
    {
        hash[i] = (char*)malloc(64 * sizeof(char));
        memset(hash[i], 0, 64 * sizeof(char));
    }
    int len = strlen(pattern);
    for (int i = 0; i < len; ++i)
    {
        char *p = str;
        while (p && *p != 0 && *p != ' ') ++p;
        if (' ' == *p) *p++ = 0;
        if (strlen(str) == 0)
            return false;
        int pos = pattern[i] - 'a';
        if (strlen(hash[pos]) == 0)
        {
            for (int j = 0; j < 26; ++j)
            {
                if (j != pos && strlen(hash[j]) > 0)
                {
                    if (strcmp(hash[j], str) == 0)
                        return false;
                }
            }
            strcpy(hash[pos], str);
        }
        else
        {
            if (strcmp(hash[pos], str) != 0)
                return false;
        }
        str = p;        
    }
    if (strlen(str) > 0)
        return false;
    return true;
}

原文地址:https://www.cnblogs.com/ganxiang/p/13562745.html