数学的方式
是对于所有的字符分成简单的三类
0 小于 L
1 LR 之间
2 大于R
也就是再求 不包含 2 但是包含1 的子数组个数
不包含2的子数组个数好求 对于连续的相邻的n个 非2类数 就有 n*(n-1)//2 + n 个连续子数组
但是包含1 的子数组个数不好求,这里求反 求不包含 包含1 不包含2 的 子数组个数 原理同上 (将1 类这时视为2类)
最后做差即可
dp
A[i] 为以 i 结尾的满足条件的子数组个数
A[i] =A[i-1] 当A[i] 是第1类数
A[i] =prev 当A[i] 是第0类数
A[i] =0 当A[i] 是第2类数 同时更新Prev
prev 的语义是最左邻近的第二类数
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步