#1433. 解码方法

解码方法

问题陈述

一条包含字母 A-Z 的消息通过以下映射进行了 编码 : "11" -> 'AA' "22" -> 'BB' ... "2525" -> 'YY' "2626" -> 'ZZ' 然而,在解码已编码的消息时,你意识到有许多不同的方式来解码,因为有些编码被包含在其它编码当中("22" 和 "55" 与 "2525")。 例如,"1110611106" 可以映射为: "AAJFAAJF" ,将消息分组为 (11, 11, 1010, 66) "KJFKJF" ,将消息分组为 (1111, 1010, 66) 消息不能分组为 (11, 1111, 0606) ,因为 "0606" 不是一个合法编码(只有 "66" 是合法的)。 注意,可能存在无法解码的字符串。 给你一个只含数字的非空字符串s,请计算并返回解码方法的 总数.如果没有合法的方式解码整个字符串,返回00。 答案可能很大 输出对998244353998244353取模的结果

输入格式

包含一个字符串 ss,只包含数字 ( 1s1051 \le |s| \le 10^5 )

输出格式

输出答案对998244353998244353取模的结果

样例1

input

12

output

2

样例2

input

226

output

3

样例解释

对于第一个样例:它可以解码为 "ABAB"(11 22)或者 "LL"(1212) 对于第二个样例:它可以解码为 "BZBZ" (22 2626), "VFVF" (2222 66), 或者 "BBFBBF" (22 22 66)

限制与约定

对于 30%30\% 的数据,1s201 \le |s| \le 20 。 对于 100%100\% 的数据,1s1051 \le |s| \le 10^5

  • 时间限制: 1s1 s
  • 空间限制: 256MB256 MB