我对此练习有疑问:
根据1 <= A,B <= 10^18
给出范围 A 到 B
和一些整数表示带Ni
的子串1 <= i <= 1000
;
返回包含任何给定子字符串的 A,B (包括 A 和 B )范围内的可能数字总数。
输入
A, B, i
N1
N2
...
Ni
例如:
简单输入
10 22 2
1
10
简单输出
11
说明:10到22的范围包含以下数字,10* 11* 12* 13* 14* 15* 16* 17* 18* 19* 20 21* 22
包含子串10或1的有效数字标有(*)
我们如何计算范围内可能数字的总数?
答案 0 :(得分:1)
首先,需要了解Aho-Corasick自动化以及动态规划。
我们将问题从范围 [A,B] 分为两个问题 [1,B] - [1,A-1]
构建以下动态编程方法。
DP[position][is_equal_to_A][which_node_in_automation];
然后我们只列举当前号码的最后一个数字。