-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwordPattern.py
More file actions
54 lines (49 loc) · 1.19 KB
/
wordPattern.py
File metadata and controls
54 lines (49 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#Source : https://leetcode.com/problems/word-pattern/
#Author : Yuan Wang
#Date : 2018-07-13
'''
**********************************************************************************
*Given a pattern and a string str, find if str 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 str.
*
*Example 1:
*
*Input: pattern = "abba", str = "dog cat cat dog"
*Output: true
*Example 2:
*
*Input:pattern = "abba", str = "dog cat cat fish"
*Output: false
**********************************************************************************/
'''
#Time complexity:O(n) Space complexity:O(1)
def wordPattern(pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
str_list=str.split()
dic={}
dic_str={}
for i,word in enumerate(pattern):
if word in dic:
dic[word].append(i)
else:
dic[word]=[i]
for i,word in enumerate(str_list):
if word in dic_str:
dic_str[word].append(i)
else:
dic_str[word]=[i]
if len(dic) != len(dic_str):
return False
for i in dic:
if dic[i] not in dic_str.values():
return False
return True
pattern="abba"
str="dog cat cat dog"
print(wordPattern(pattern,str))