哈希算法----单词匹配模式

匹配模式:大大小小  --> 1122

 


def wordpattern(wordpattern, input):
    word = input.split(' ')          # 目标字符串的单词以空格隔开
    if len(word) != len(wordpattern):   # 判断目标字符串和 模式字符串的长度是否相等
        return False
    hash = {}    # 存储模式字符串和单词字符串的对应关系
    used = {}    # 存储模式映射关系
    for i in range(len(wordpattern)):
        wp_i = wordpattern[i]   # 切割
        w_i = word[i]
        if wp_i in hash:   # 检查模式字符串是否已经被记录过
            if hash[wp_i] != w_i:  # 检查被记录过的模式字符串是否第一次出现
                return False
        else:   # 不是第一次出现
            if w_i in used:    # 判断是否在存储映射表中出现
                return False
            hash[wp_i] = w_i    # 第一次出现加入hash表
            used[w_i] = True    # used的表记录映射关系
    return True


def wordp(wordp, input):
    word = input.split(' ')
    if len(word) != len(wordp):
        return False
    hash = {}
    used = {}
    for i in range(len(wordp)):
        wp_i = wordp[i]
        w_i = word[i]
        # 判断是否在hash表中
        if wp_i in hash:
            if hash[wp_i] != w_i:   # 判断存储关系是否一致
                return False
        else:
            if w_i in used:
                return False

            hash[wp_i] = w_i
            used[w_i] = True
    return True


print(wordp('一二三一', '嘻 哈 噗 嘻'))

 

你可能感兴趣的:(算法)