当前位置: 首页 > article >正文

leetcode(hot100)8、9

解题思路:看到重复用哈希表 本题用哈希表和滑动窗口滑动窗口用两个指针表示, 哈希表用来存储无重复的值,如果遍历哈希表找到了则说明这是重复的 需要移动这个窗口 滑动窗口向右移(用while循环),然后插入这个值,最终取最大的长度。

当右指针 right 遍历字符串时,检查当前字符 s[right] 是否已经在窗口中。然后在分为两种情况来考虑。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int sum = 0,left = 0;
        unordered_set<char> window;
        for(int right = 0; right < s.size();right++){
            while(window.find(s[right]) != window.end()){
                window.erase(s[left]);
                left++;
            }
            window.insert(s[right]);
            sum = max(sum,right-left+1);            
        }
        return sum;
    }
};

解题思路:

用滑动窗口来解决 然后返回滑动窗口左指针。首先遍历p的所有字母,保存在一个数组中(下标表示字母,值表示字母出现的次数),然后处理s的数组,判断左指针是否小于0 即确定窗口大小是否符合标准标准了,符合标准之后就是比较两个数组是否相等 相等就是放入结果中。(这里面要处理s数组中的值 当left走了就要减减)。

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        vector<int>result;
        vector<int>conts(26);
        vector<int>contp(26);
        for(char c:p){
            contp[c-'a']++;
        }
        for(int right = 0; right < s.size();right++){
            conts[s[right]-'a']++;//右端字母进入窗口
            int left = right - p.size() + 1;
            if(left<0)continue;//窗口长度不足 即只有刚开始时有
            if(conts == contp){//s和p相等
                result.push_back(left);//左端下标加入答案
            }
            conts[s[left]-'a']--;//左端字母离开窗口
        }
        return result;
    }
};


http://www.kler.cn/a/470879.html

相关文章:

  • ECharts系列:echart中折线图折线设置不平滑显示
  • vue3中el-table实现多表头并表格合并行或列
  • HTML5实现喜庆的新年快乐网页源码
  • 微信小程序中使用 TypeScript 定义组件时,Component 函数确实需要多个类型参数
  • 基于SpringBoot的斯诺克球馆预约购票管理系统
  • 行为模式10.职责链模式
  • java设计模式 单例模式
  • 【python】json库处理JSON数据
  • 论文复现6:
  • 微服务框架,Http异步编程中,如何保证数据的最终一致性
  • Linux高并发服务器开发 第九天(gdb调试器/基础指令 栈帧)
  • latex学习记录
  • 网络安全漏洞防护技术原理与应用
  • 【RK3588 Linux 5.x 内核编程】-Misc设备驱动
  • 【JMeter】单接口
  • 关于IDE的相关知识之二【插件推荐】
  • Freemarker模板进行判空
  • 【行空板K10】获得当前所在城市及JSON库的移植:
  • 《机器学习》——逻辑回归基本介绍
  • 122.【C语言】数据结构之快速排序(Hoare排序的优化)
  • 【STM32】VSCode打开STM32工程时结构体和宏报错问题解决
  • Redis数据库——Redis雪崩、穿透、击穿
  • STM32-笔记32-ESP8266作为服务端
  • 设计模式七大设计原则Java 实践
  • 没有图形界面,如何快速部署一个Ubuntu 24.10的Server虚拟机
  • AICMP,开启智能挖矿新时代!