【LeetCode刷题】290 单词模式 || 340 两个数组的交集

本文探讨了两种算法问题:一是判断字符串是否遵循给定的模式,通过建立模式与字符串的字典进行匹配;二是计算两个数组的交集,采用集合操作去除重复元素并找出共同部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jeremy_lf

你的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值