做网页收集素材常用的网站有哪些,深圳最新消息,四海网络网站建设,wordpress自己评论这里写目录标题 一、290. 单词规律二.、存在重复元素 II三、128. 最长连续序列 一、290. 单词规律
简单
给定一种规律 pattern 和一个字符串 s #xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配#xff0c;例如#xff0c; pattern 里的每个字母和字符串 s… 这里写目录标题 一、290. 单词规律二.、存在重复元素 II三、128. 最长连续序列 一、290. 单词规律
简单
给定一种规律 pattern 和一个字符串 s 判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配例如 pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。
示例1: 输入: pattern “abba”, s “dog cat cat dog” 输出: true 示例 2: 输入:pattern “abba”, s “dog cat cat fish” 输出: false 示例 3: 输入: pattern “aaaa”, s “dog cat cat dog” 输出: false
解题思路 首先对字符串进行分割之后先判断pattern和分割后的字符串长度是否相同 如果不相同直接False 接着遍历分割后的字符串看索引值是否相同不相同就返回False class Solution:def wordPattern(self, pattern, s):words s.split( )if len(pattern) ! len(words):return False # 字符数和单词数不一致一定不匹配p2s {} # pattern中的字符到s中的字符字串的映射表s2p {} # s中的字符子串到pattern中的字符的映射表for ch,word in zip(pattern,words):if (ch in p2s and p2s[ch]!word) or (word in s2p and s2p[word]!ch):# 字符与单词没有一一映射即字符记录的映射不是当前单词或单词记录的映射不是当前字符return False# 更新映射已存在的映射更新后仍然是不变的不存在的映射将被加入p2s[ch]words2p[word]chreturn Truess Solution()
pattern aaaa
s dog cat cat dog
print(ss.wordPattern(pattern, s))二.、存在重复元素 II
简单 给你一个整数数组 nums 和一个整数 k 判断数组中是否存在两个 不同的索引 i 和 j 满足 nums[i] nums[j] 且 abs(i - j) k 。如果存在返回 true 否则返回 false 。 示例 1 输入nums [1,2,3,1], k 3 输出true 示例 2 输入nums [1,0,1,1], k 1 输出true 示例 3 输入nums [1,2,3,1,2,3], k 2 输出false
def test2(nums, k):hash {}for i in range(len(nums)):if nums[i] not in hash:hash[nums[i]] ielse:if i - hash[nums[i]] k:return Trueelse:hash[nums[i]] ireturn Falsenums [1, 2, 3, 1, 2, 3]
k 2
print(test2(nums, k))三、128. 最长连续序列
中等 给定一个未排序的整数数组 nums 找出数字连续的最长序列不要求序列元素在原数组中连续的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
示例 1 输入nums [100,4,200,1,3,2] 输出4 解释最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。 示例 2 输入nums [0,3,7,2,5,8,4,6,0,1] 输出9
思路 def test3(nums):res 0 # 记录最长连续序列的长度num_set set(nums) # 记录nums中的所有数值for num in num_set:# 如果当前的数是一个连续序列的起点统计这个连续序列的长度if (num - 1) not in num_set:seq_len 1 # 连续序列的长度初始为1while (num 1) in num_set:seq_len 1num 1 # 不断查找连续序列指导num的下一个数不存在数组中res max(res, seq_len)return resnums[100,4,200,1,3,2]
print(test3(nums))a[i for i in range(2541,2676)]
print(a)