leetcode with python:290. Word Pattern

题目:

Given a pattern and a string s, find if s follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in s.

给定一个模式跟一个字串,判断字串是否遵循格式
ex:input: pattern = "abba",s = "dog cat cat dog"=>output: true
input: pattern = "abba", s = "dog cat cat fish"=>output: false

这题感觉解法上很像205.
都是建立hash map判断两字串元素是否为一对一关係
不过这次的关係会是字元对应到词

class Solution:    def wordPattern(self, pattern: str, s: str) -> bool:        s=s.split(' ')                if len(s)!=len(pattern):            return False                d={}        for i in range(len(pattern)):            if pattern[i] not in d:                if s[i] in d.values():                    return False                else:                    d[pattern[i]]=s[i]            else:                if d[pattern[i]]!=s[i]:                    return False        return True

pattern表模式,而split字串s让其变为词语阵列,设dictionary为d存放对应关係
假如pattern和s长度不同就直接return False
毕竟长度不同怎么可能对应得到pattern
从头开始存放关係(pattern[i]是key,s[i]是value),会出现以下几种可能

**(1)pattern[i]不存在key中且s[i]不存在value中:**发现新对应关係,纪录

**(2)pattern[i]不存在key中但s[i]存在value中:**发现非一对一关係,return False

**(3)pattern[i]存在key中且对应值和s[i]相同:**发现重複的关係而已,无视

**(4)pattern[i]存在key中但对应值和s[i]不同:**发现非一对一关係,return False

若纪录完都没发现非一对一关係就return True
没错这题解法真的很像很像205.
最后执行时间28ms(faster than 96.83%)

那我们下题见


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章