#643. 不相邻字符串

不相邻字符串

题目描述

给定一个只包含字母 a、b、c 的字符串 SS。

请你计算 SS 的非空子序列中,相邻字符均不相同的子序列个数,并将答案对 998244353998244353 取模。

输入格式

第一行输入一个字符串 SS

输出格式

输出符合条件的子序列数量。

abbc
11
cabcabcbcaccacbcbcaabacbacaabccacbccbcacbacbacabcacabcaccaaaaabababcbabacaccabbcacbcbcbcababcbcbabca
378217423

提示

样例解释 1

所有符合条件的子序列有以下 1111 个:

  • a(SS 的第 11 个字符)
  • b(SS 的第 22 个字符)
  • b(SS 的第 33 个字符)
  • c(SS 的第 44 个字符)
  • ab(SS 的第 11、22 个字符)
  • ab(SS 的第 11、33 个字符)
  • ac(SS 的第 11、44 个字符)
  • bc(SS 的第 22、44 个字符)
  • bc(SS 的第 33、44 个字符)
  • abc(SS 的第 11、22、44 个字符)
  • abc(SS 的第 11、33、44 个字符)

需要注意的是,正如第 22 个和第 33 个子序列一样,若取自不同位置,即使内容相同,也视为不同的子序列。

数据范围

保证给定的字符串只包含 a、b、c。

  • 对于 20%20\% 的数据满足:∣S∣≤15|S|\le 15。
  • 对于 50%50\% 的数据满足:∣S∣≤5000|S|\le 5000。
  • 对于 100%100\% 的数据满足:∣S∣≤3×105|S|\le 3\times 10^5。