290
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.
Examples:
pattern = “abba”, str = “dog cat cat dog” should return true.
pattern = “abba”, str = “dog cat cat fish” should return false.
pattern = “aaaa”, str = “dog cat cat dog” should return false.
pattern = “abba”, str = “dog dog dog dog” should return false.
Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.
Credits:
Special thanks to @minglotus6 for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
思路:
(1)字符串按空格拆分
(2)hashtable,pattern=”abba”,str=”cat dog dog cat” True
pattern=”abba” str=”cat cat cat cat” False
python代码
class Solution(object):
def wordPattern(self, pattern, str):
temp=str.split()
table={}
flag=1
#越界检查
if len(temp)!=len(pattern):
return False
for i in range(len(pattern)):
table.setdefault(pattern[i],None)
if table[pattern[i]]==None:
for k in table:
if k!=pattern[i]:
if temp[i]==table[k]:
return False
table[pattern[i]]=temp[i]
elif temp[i]!=table[pattern[i]]:
return False
if flag:
return True
205
Given two strings s and t, determine if they are isomorphic.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
For example,
Given “egg”, “add”, return true.
Given “foo”, “bar”, return false.
Given “paper”, “title”, return true.
class Solution(object):
def isIsomorphic(self, s, t):
if len(s)!=len(t):
return False
table={}
for i in range(len(s)):
table.setdefault(s[i],None)
if table[s[i]]==None:
for k in table:
if k!=s[i]:
if t[i]==table[k]:
return False
table[s[i]]=t[i]
elif t[i]!=table[s[i]]:
return False
return True