本文主要是介绍小黑和阿黄骑车逛了逛河堤,今天练完钢琴小汤3第5课后和小老黑吃拉面夜里准备天津小黄车骑行的leetcode之旅:567. 字符串的排列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
小黑代码
class Solution:def checkInclusion(self, s1: str, s2: str) -> bool:# s1与s2的长度n_s1 = len(s1)n_s2 = len(s2)# 非法情况if n_s1 > n_s2:return False# 初始化差值向量count = [0] * 26# 判断初始状态是否成立for i in range(n_s1):count[ord(s1[i])-97] -= 1count[ord(s2[i])-97] += 1# 初始化差值diff = [i != 0 for i in count].count(True)# 初始窗口符合条件if not diff:return True# 开始进行滑动窗口for i in range(n_s2-n_s1):# 将要滑出的字符是否影响diffif count[ord(s2[i])-97] == 1:diff -= 1elif not count[ord(s2[i])-97]:diff += 1count[ord(s2[i])-97] -= 1# 将要滑入的字符是否影响diffif count[ord(s2[i+n_s1])-97] == -1:diff -= 1elif not count[ord(s2[i+n_s1])-97]:diff += 1count[ord(s2[i+n_s1])-97] += 1if not diff:return Truereturn False
双指针法
class Solution:def checkInclusion(self, s1: str, s2: str) -> bool:# s1与s2长度n_s1 = len(s1)n_s2 = len(s2)if n_s1 > n_s2:return False# 计算s1的每个字符个数count = [0] * 26for i in range(n_s1):count[ord(s1[i])-97] += 1# 定义双指针left = 0right = 0while right < n_s2:# 计数该字符count[ord(s2[right])-97] -= 1# 不断移动做指针,使得该字符的偏差大于等于0while count[ord(s2[right])-97] < 0:count[ord(s2[left])-97] += 1left += 1right += 1if right - left == n_s1:return Truereturn False
小黑生活
晚餐麻辣烫烤肠
王者峡谷,打得人家抬不起头
晚饭后和阿黄温榆河骑小黄车
以后可以继续学钢琴啦
晚上和阿黄老黑们小搞一下,中老黑遭遇情感危机
眼睛逐步恢复
早上没起来,直接午饭
给远在西安的大老黑寄党组织关系
回去打卡小汤3第5课
跟小老黑吃个老马拉面
准备零点出发跟中老黑阿黄小黄车骑行天津~
这篇关于小黑和阿黄骑车逛了逛河堤,今天练完钢琴小汤3第5课后和小老黑吃拉面夜里准备天津小黄车骑行的leetcode之旅:567. 字符串的排列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!