首页 > 其他分享 >周四

周四

时间:2023-05-18 15:56:43浏览次数:30  
标签:子串 周四 set charSet start ans unordered

题目描述:

给定一个字符串 s 和一个整数 k,你需要找到所有长度为 k 且只包含唯一字符的子串。

设计思路:

首先,定义一个字符串集合 ans,用于存储结果。然后,从下标0开始遍历字符串s,利用 unordered_set 数据结构存储当前子串中出现的字符,并记录当前子串长度。当当前子串长度超过k时,将其首位字符从 unordered_set 中删除,并将子串起始位置加1。如果当前子串长度等于k,则将该子串添加到结果集合 ans中。

程序流程图:

开始
|
获取字符串s和整数k
|
初始化ans和unordered_set
|
循环遍历s,每次增加一个字符
|    |
|    如果unordered_set中已存在该字符,说明不符合条件,从首位删除字符并修改子串起始位置
|    否则,将字符加入unordered_set中
|         |
|         如果unordered_set大小正好等于k,将子串添加到结果集合ans中
|
返回ans
结束

代码实现:

class Solution {
public:
    vector<string> distinctSubstring(string s, int k) {
        unordered_set<char> charSet;
        vector<string> ans;
        int start = 0;
        for (int i = 0; i < s.size(); i++) {
            if (charSet.count(s[i]) > 0) {
                while (charSet.count(s[i]) > 0) {
                    charSet.erase(s[start]);
                    start++;
                }
            }
            charSet.insert(s[i]);
            if (charSet.size() == k) {
                ans.push_back(s.substr(start, k));
                charSet.erase(s[start]);
                start++;
            }
        }
        return ans;
    }
};

标签:子串,周四,set,charSet,start,ans,unordered
From: https://www.cnblogs.com/zeyangshuaige/p/17412187.html

相关文章

  • 5月18日周四
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写,接口调试是怎么实现的解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段......
  • 周四
    问题描述编写一个C++程序,用户可以输入两个数字,程序输出他们的和。但是如果输入的两个数字相等,程序会弹出一个窗口提示“你输入的两个数字相等!请重新输入!”,并要求用户重新输入两个数字。程序不断循环此过程,直到用户输入不相等的两个数字为止。设计思路本题目的主要难点在于如......
  • 5月11日周四
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写,接口调试是怎么实现的解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段......
  • 周四打卡
    问题描述:本题要求输入一个字符串,判断该字符串是否为回文串。如果该字符串是回文串,则输出YES,否则输出NO。保证字符串长度小于1000。设计思路:首先需要从用户处获取输入的字符串,然后对该字符串进行遍历,将其逆序存储并与原字符串进行比较,如果两者相等则该字符串为回文串,否则不是。......
  • 2023年5月4日周四
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段含义,以了解数据库表如......
  • 2023年4月27日周四
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段含义,以了解数据库表如......
  • 周四打卡
    题目描述:编写一个程序,实现将用户输入的字符串中的所有空格替换为下划线的功能。例如,输入字符串"Thequickbrownfoxjumpsoverthelazydog",输出结果为"The_quick_brown_fox_jumps_over_the_lazy_dog"。设计思路:接收用户输入的字符串。遍历字符串中的每个字符,如果是空格......
  • 2023年4月20日周四
    计划加字段,完成邮件和审核功能,还有条件显示接口信息学习新东西删除项目中没用的东西尝试自己写一个简单的接口执行09点19分  学习英语16点11分  解决接口显示问题记录问题想法其实加字段,完成邮件和审核功能,还有条件显示接口信息这个可以说是都依赖于审核状态......
  • 2023.4.6周四每日博客
    为了实现多表间相互的查询,今天学习的多表连接,我们都知道,在SSM框架中,我们在applicationContext.xml配置文件中添加数据源就可以实现数据库增删改查但是只能连接一个数据库,这个时候我们就要从spring提供的源码下手看看有没有有关数据源切换的方法,找到关键源码(AbstractRoutingDat......
  • 2022.3.2周四每日博客
    今天实现了单表的jdbc连接数据库增删改查,并开始向多表实现增删改查逐步靠拢由于·身体抱恙,一直处于发烧状态,下午请假没有去上体育课,在宿舍睡了一身汗今天没有花大量时间......