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 翻译