AT_abc456_d [ABC456D] Not Adjacent 2
题目描述
给定一个只包含字母 `a`、`b`、`c` 的字符串 $S$。
请你计算 $S$ 的非空**子序列**中,相邻字符均不相同的子序列个数,并将答案对 $998244353$ 取模。
如果两个子序列取自不同的位置,即使它们作为字符串相同,也视为不同的子序列。
什么是子序列?
一个字符串 $S$ 的**子序列**是指通过去掉 $S$ 中的若干字符(也可以不去掉),并按照原有顺序连接剩下的字符形成的新字符串。例如,`ab`、`ac` 均为 `abc` 的子序列,但 `ca`、`bb` 不是 `abc` 的子序列。
输入格式
输入通过标准输入给出,格式如下:
> $S$
输出格式
输出符合条件的子序列数量。
说明/提示
## 样例解释 1
所有符合条件的子序列有以下 $11$ 个:
- `a`($S$ 的第 $1$ 个字符)
- `b`($S$ 的第 $2$ 个字符)
- `b`($S$ 的第 $3$ 个字符)
- `c`($S$ 的第 $4$ 个字符)
- `ab`($S$ 的第 $1$、$2$ 个字符)
- `ab`($S$ 的第 $1$、$3$ 个字符)
- `ac`($S$ 的第 $1$、$4$ 个字符)
- `bc`($S$ 的第 $2$、$4$ 个字符)
- `bc`($S$ 的第 $3$、$4$ 个字符)
- `abc`($S$ 的第 $1$、$2$、$4$ 个字符)
- `abc`($S$ 的第 $1$、$3$、$4$ 个字符)
需要注意的是,正如第 $2$ 个和第 $3$ 个子序列一样,若取自不同位置,即使内容相同,也视为不同的子序列。
## 样例解释 2
将结果对 $998244353$ 取模输出。
## 数据范围
- $S$ 是长度在 $1$ 到 $3 \times 10^5$ 之间的字符串(含两端),且只包含 `a`、`b`、`c`。
由 ChatGPT 5 翻译