1.字符串的排列

思路:双指针+滑动窗口

python:

class Solution:def checkInclusion(self, s1: str, s2: str) -> bool:dict_={}for i in s1:dict_[i] = dict_.get(i,0)+1# # print('==dict_:',dict_)left,right =0,0length = 0minlen = float('inf')res = ''while right<len(s2):# 向右拓展if s2[right] in dict_:if dict_[s2[right]]>0:#注意要进行判断避免重复字符length+=1dict_[s2[right]]-=1while length==len(s1):#包含了子串啦 这个时候左边要压缩if right-left+1==len(s1):#找最短的return Trueleft+=1if s2[left-1] in dict_:#注意left+1啦 所以要用left-1的字符判断是否出现在dict_中dict_[s2[left - 1]] += 1if dict_[s2[left-1]]>0:#避免重复字符造成的减法length-=1right+=1return False

c++:

class Solution {
public:bool checkInclusion(string s1, string s2) {map<char,int> dict_;for (int k=0;k<s1.size();k++){dict_[s1[k]]++;}// map <char,int>::iterator itor = dict_.begin();        // //debug// for(;itor!=dict_.end();itor++)// {//     cout<<itor->first<<" "<<itor->second<<endl;// }        int right=0;int left=0;int remain_legth =0;while (right<s2.size()){   // cout<<"=dict_[s2[right]:"<<dict_[s2[right]]<<endl;if(dict_[s2[right]]>0){remain_legth+=1;}dict_[s2[right]]-=1;while(remain_legth==s1.size()){if(right-left+1==s1.size()){return true;}  left+=1;dict_[s2[left-1]]+=1;                 if (dict_[s2[left-1]]>0){remain_legth-=1;}}right+=1;}return false;}
};

leetcode双指针(python与c++)相关推荐

  1. leetcode与python进阶学习总结

    转自:leetcode与python进阶学习总结 l1是一个链表型,val是其属性,以下句子意义为如果l1不为空则取l1.val否则取0,节省代码空间,干净利落 x= l1.val if l1 els ...

  2. 每日一道leetcode(python)1823. 找出游戏的获胜者

    每日一道leetcode(python)1823. 找出游戏的获胜者 2021-08-07 共有 n 名小伙伴一起做游戏.小伙伴们围成一圈,按 顺时针顺序 从 1 到 n 编号.确切地说,从第 i 名 ...

  3. 每日一道leetcode(python)844. 比较含退格的字符串

    每日一道leetcode(python)844. 比较含退格的字符串 2021-09-05 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表 ...

  4. 每日一道leetcode(python)695. 岛屿的最大面积

    每日一道leetcode(python)695. 岛屿的最大面积 2021-08-21 给定一个包含了一些 0 和 1 的非空二维数组 grid .一个 岛屿 是由一些相邻的 1 (代表土地) 构成的 ...

  5. 每日一道leetcode(python)876. 链表的中间结点

    每日一道leetcode(python)876. 链表的中间结点 2021-08-19 给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点.示例 1 ...

  6. 每日一道leetcode(python)77. 组合

    每日一道leetcode(python)77. 组合 2021-08-25 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合.你可以按 任何顺序 返回答案.示例 1:输入 ...

  7. 每日一道leetcode(python)46. 全排列

    每日一道leetcode(python)46. 全排列 2021-08-25 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 .你可以 按任意顺序 返回答案.示例 1:输入:nums ...

  8. 每日一道leetcode(python)48. 旋转图像

    每日一道leetcode(python)48. 旋转图像 2021-07-27 给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度. 你必须在 原地 旋转图像 ...

  9. leetcode动态规划(python与c++)

    1 . 斐波那契数 class Solution:def fib(self, n: int) -> int:# if n==0:# return 0# elif n==1:# return 1# ...

最新文章

  1. 自动驾驶规划术语与搜索空间的几种方法
  2. 【备忘】Android获取正在使用网络的IP4地址
  3. 很抱歉,这场大会我们没法卖票给你了
  4. 笔记-信息系统安全管理-信息系统安全等级保护基本要求
  5. boost::gil::detail::homogeneous_color_base用法的测试程序
  6. flink的savepoints和checkpoints以及state Query(暂时无法全部完成)
  7. java代码执行linux命令_怎么用java代码运行linux命令
  8. (day05)剑指 Offer 11. 旋转数组的最小数字-(二分法)
  9. 在华为服务器 RH 2288H V2上装 windows 2008
  10. View#post与Handler#post的区别,以及导致的内存泄漏分析
  11. 树莓派改造无线打印机
  12. java vad_(转载)静音检测VAD算法
  13. AI-实战-ICON图标
  14. 证件照人像与背景分离(Pythoncv)
  15. MySQL的隐式类型转换
  16. 炫酷手持滚动弹幕生成小工具微信小程序源码
  17. Android studio 实现背景音乐(打开页面自动循环播放)
  18. 狸猫 + 黑猫警长正在待命
  19. 51单片机 11.0592MHz 产生115200 波特率
  20. 人气有所回升,反弹看量能

热门文章

  1. @FeignClient中的@RequestMapping也被SpringMVC加载的问题解决
  2. 蚂蚁金服4轮面经(Java研发):G1收集器+连接池+分布式架构
  3. 开源开放 | 细粒度可循证医学文档知识融合表示和推理(CCKS2021)
  4. 论文浅尝 | 从树结构的长短期记忆网络改进语义表示
  5. 论文浅尝 | 从知识图谱流中学习时序规则
  6. [中文事件抽取]DCFEE: A Document-level Chinese Financial Event Extraction System based on Automatically Lab
  7. 【LeetCode】3月20日打卡-Day5
  8. 虚拟机的ip地址为什么会发生变化
  9. Apache网站服务
  10. iOS事件的响应和传递机制