题解 | 包含所有三种字符的子字符串数目

题干分析:

题目意思直接明了,即计数一个只包含小写字母a,b,c的字符串种找到有多少包含a,b,c三种字符的子串.

算法思路:

不难意识到,任何包含包含a,b,c三个字符的子串的子串都是符合题目要求的子串,人话就是在最小的包含a,b,c三个字符的字串基础上拼接所有其他字符或字符串均符合题意.由此我们使用双指针并从头(left = right = 0)开始寻找,到第一个符合要求的字串,之后符合要求的字串数目就是n(字符串总长)-left,找下一类型的字串时移动right即可继续寻找操作.

实现代码:

int numberOfSubstrings(string s) {
        int n = static_cast<int>(s.size());
        unsigned A = 0, B = 0, C = 0;
        int left = 0, right = 0;
        int ans = 0;
        while (right <= n) {
            if (A && B && C) {
                ans += n - right + 1;
                if (s[left] == 'a') --A;
                else if (s[left] == 'b') --B;
                else --C;
                ++left;
                continue;
            }
            if (right != n) {
                if (s[right] == 'a') ++A;
                else if (s[right] == 'b') ++B;
                else ++C;
            }
            ++right;
        }
        return ans;
    }

复杂度分析:

  • 时间复杂度: 每个字符最多进出一次计数范围,因此总时间复杂度为O(n).
  • 空间复杂度: 只使用到了常数的额外空间,因此总空间复杂度为O(1).
全部评论

相关推荐

你是一个2026年毕业生,在2025年这一年里,你经历了日常实习、暑期实习、秋招三个阶段24年12月初-25年3月:日常实习阶段,学校开始放实习了,于是你开始着手准备找日常实习,你去了解就业岗位、编写简历、投递;然后不断碰壁,又重复投递,你没有想到一个个小小的日常实习也如此难找,没有想到实习面试的难度如同正值面试,差点找实习为半而中道崩殂;终于!你在12月初找到了一份公司做产运实习,你直接从海南飞到北京,住在青旅,开启了自己的第一份实习3月你知道了牛客这个app,直接发现了新的天地,原来大家都这么优秀,这么多人早早就知道要准备暑期实习,等秋招,而你只是一个刚刚开始一段实习,感觉学不到东西想要找下一段实习的末2大学生;你告诉自己:“没关系,不焦虑,看到优秀的人更应该向他们学习”,于是你开始了解暑期实习,开始投递,练习笔试用AI模拟面试,并按照大家说的,不断修改自己的简历,终于在5月你拿到了来自美团的暑期实习的offer5月你开始去实习,遇到了好的团队好的mentor,大厂内部的学习资料很多,你上班摸鱼的时候就在刷xuecheng,实习的时候也找到了搭子在北京合租,告别了青旅住宿,感觉北京的生活越来越是你想要的状态,你下定决心一定要留在北京工作生活8月留用流程开始了,没想到收到了转正失败的坏消息...当时打击巨大,你不明白到底哪里出了问题,于是你不得不又开始准备秋招....8月-11月秋招的过程可谓漫长又折磨人,那些简历投递秒挂的企业、点击就送的笔试、永远都不到真人环节的AI面试、....一切的一切都让你感受到无比的焦虑难挨,陷入了对自我的怀疑,对学校的怨恨,不断将自我打碎在重组,终于在11月迎来了自己的秋招offer;得到了offer你发现也没那么开心,人生每个阶段都有新的焦虑,应届生的第一份工作,你害怕选错,你不敢做选择,最终你被时间推着还是做了选择,你告诉自己:选择没那么可怕,要拥有准备”一切重头再来“的勇气。生不逢时,好像是我们这代人的悲哀,虽然生长在一切快速发展的时代,物质和精神甚至都有些过溢了,但竞争压力却与日俱增,在秋招认识的很多人都很优秀,实习+竞赛+项目各种都有,但仍然被秋招重创;究竟是人的问题还是社会的问题?看到这里,希望大家不要内耗不要怀疑自己,虽然这个社会的评价体系很单一,但仍然希望大家可以跳出评价体系,找到属于自己的路,慢点来也没关系的,人生不是0和1,中间还有很多可能性,千万不要把自己陷入死胡同里。
2025年终总结
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务