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

C++ | Leetcode C++题解之第438题找到字符串中所有字母异位词

题目:

题解:

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        int sLen = s.size(), pLen = p.size();

        if (sLen < pLen) {
            return vector<int>();
        }

        vector<int> ans;
        vector<int> count(26);
        for (int i = 0; i < pLen; ++i) {
            ++count[s[i] - 'a'];
            --count[p[i] - 'a'];
        }

        int differ = 0;
        for (int j = 0; j < 26; ++j) {
            if (count[j] != 0) {
                ++differ;
            }
        }

        if (differ == 0) {
            ans.emplace_back(0);
        }

        for (int i = 0; i < sLen - pLen; ++i) {
            if (count[s[i] - 'a'] == 1) {  // 窗口中字母 s[i] 的数量与字符串 p 中的数量从不同变得相同
                --differ;
            } else if (count[s[i] - 'a'] == 0) {  // 窗口中字母 s[i] 的数量与字符串 p 中的数量从相同变得不同
                ++differ;
            }
            --count[s[i] - 'a'];

            if (count[s[i + pLen] - 'a'] == -1) {  // 窗口中字母 s[i+pLen] 的数量与字符串 p 中的数量从不同变得相同
                --differ;
            } else if (count[s[i + pLen] - 'a'] == 0) {  // 窗口中字母 s[i+pLen] 的数量与字符串 p 中的数量从相同变得不同
                ++differ;
            }
            ++count[s[i + pLen] - 'a'];
            
            if (differ == 0) {
                ans.emplace_back(i + 1);
            }
        }

        return ans;
    }
};

http://www.kler.cn/news/326704.html

相关文章:

  • Python Web 应用中的 API 网关集成与优化
  • IText导出pdf不显示泰文
  • 438. 找到字符串中所有字母异位词
  • uniapp 知识点
  • 【前端样式】Sweetalert2简单用法
  • 如何使用ssm实现个人日常事务管理系统+vue
  • 金融教育宣传月 | 平安养老险百色中心支公司开展金融知识“消保县域行”宣传活动
  • 心理咨询预约管理系统(含源码+sql+视频导入教程)
  • web前端与koa框架node后端实现分片断点上传
  • xtu oj 六边形
  • 制造企业如何提升项目管理效率?惠科股份选择奥博思PowerProject项目管理系统
  • Windows环境Apache httpd 2.4 web服务器加载PHP8:Hello,world!
  • 【BurpSuite】访问控制漏洞和权限提升 | Access control vulnerabilities (3-6)
  • 一个静态ip可以提取出来多少ip
  • 新版pycharm如何导入自定义环境
  • elasticsearch_exporter启动报错 failed to fetch and decode node stats
  • C语言_回调函数和qsort
  • 全局安装cnpm并设置其使用淘宝镜像的仓库地址(地址最新版)
  • [leetcode] 71. 简化路径
  • 平安养老险肇庆中心支公司开展“2024年金融教育宣传月”活动
  • 【设计模式-模板】
  • k8s StorageClass 存储类
  • 中信银行西安分行开展“担当新使命 消保县域行”金融教育宣传活动
  • 总结之Coze 是一站式 AI Bot 开发平台——工作流使用及coze总结(三)
  • vivado中除法器ip核的使用
  • VS开发 - 静态编译和动态编译的基础实践与混用
  • golang学习笔记23-面向对象(五):多态与断言【重要】
  • C++学习9.24
  • git本地分支落后于远程分支,因此推送被拒绝怎么办?
  • nodejs逐字读取文件示例