【牛客刷题】小红的red字符串
文章目录
- 一、题目介绍
- 1.1 题目描述
- 1.2 输入描述
- 1.3 输出描述
- 1.4 示例
- 二、解题思路
- 2.1 核心算法设计
- 2.2 性能优化关键
- 2.3 算法流程图
- 三、解法实现
- 3.1 解法一:基础实现(字符串状态)
- 3.1.1 初级版本分析
- 3.2 解法二:优化版本(长整数编码)
- 3.2.1 优化版本分析
- 3.2.2 关键设计解析
- 1. 状态编码设计
- 2. 核心算法逻辑
- 3. 性能优化点
- 3.2.3 复杂度分析
一、题目介绍
1.1 题目描述
小红拿到了一个只包含’r’、‘e’、'd’三种字母的字符串。
她想知道,有多少子串满足’r’、‘e’、'd’三种字母的数量严格相等?
1.2 输入描述
一个仅包含r、‘e’、'd’三种字符的字符串。长度不超过200000。
1.3 输出描述
三种字母的数量相等的子串个数。
1.4 示例
- 输入
redrde
- 输出
4
- 说明
共有一下四个合法子串:
[red]rde
r[edr]de
red[rde]
[redrde]
二、解题思路
2.1 核心算法设计
前缀和+状态压缩:
- 定义三个变量
countR
、count