290、单词模式
定义一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式。这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应模式。
示例1:
输入: pattern = “abba”, str = “dog cat cat dog”
输出: true
示例 2:
输入:pattern = “abba”, str = “dog cat cat fish”
输出: false
solution:建立pattern和string的字典来判断ab形式
class Solution(object):
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
str_list = str.split()
if len(str_list) != len(pattern) or len(set(str_list)) != len(set(pattern)):
return False
d = {}
for i in range(len(pattern)):
if pattern[i] not in d:
d[pattern[i]] = str_list[i]
else:
if d[pattern[i]] != str_list[i]:
return False
return True
#方法二
class Solution1:
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
l = str.split(' ')
if len(l) != len(pattern):
return False
#for p,k in zip(pattern,l):
# print(p,k)
#print(*zip(pattern,l))
#print(len(set(zip(pattern,l))))
return len(set(zip(pattern, l))) == len(set(pattern)) == len(set(l))
solution = Solution1()
print(solution.wordPattern('abba', 'dog fish fish dog'))
340、两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
class Solution(object):
def intersection(self, nums1, nums2):
nums1 = list(set(nums1))
nums2 = list(set(nums2))
a =[]
for i in range(len(nums1)):
if nums1[i] in nums2:
a.append(nums1[i])
return a
nums1 = [4,9,5]
nums2 = [9,4,9,8,4]
solution = Solution()
print(solution.intersection(nums1,nums2))
#方法二
class Solution1(object):
def intersection(self, nums1, nums2):
a =[]
for i in range(len(nums1)):
if nums1[i] in nums2 and nums1[i] not in a:
a.append(nums1[i])
return a
nums1 = [4,9,5]
nums2 = [9,4,9,8,4]
solution = Solution1()
print(solution.intersection(nums1,nums2))