1081. 同构字符串

1081. 同构字符串

暂无测试数据。

题目描述

给定一个字符串 \(T\),它的长度是 \(LT\),
那么字符串 \(T\) 可以用字符数组 T[1..LT] 来表示。

你可以把 \(T\) 的任意两个字符交换位置,
你可以交换任意多次。
经过交换之后的字符串被称为 \(T\) 的同构串。

例如:
T="abac"
那么 "aabc"、  "aacb"、 "baac"、 "baca"、 "bcaa"、 "caab"、 "caba"、 "cbaa"等都是字符串T的同构串。

而"baab"、 "bcab"等都不是字符串 \(T\) 的同构串。

再给定一个字符串 \(S\),长度是 \(LS\),
那么字符串 \(S\) 可以用字符数组 S[1..LS] 来表示。
初始时,ans=0 。
对于每一个下标 \(K\),其中 \(1 \leq K \leq LS–LT+1\), 
那么 S[K…K+LT-1] 是 \(S\) 的一个子串,
如果该子串 S[K…K+LT-1] 是字符串 \(T\) 的同构串,
那么 ans 增加 1。
你的任务就是输出 ans 最后的值。

输入

第一行,一个字符串 \(T\)。
长度不超过10000,
\(T\) 的每个字符要么是小写字母要么是大写字母。

第二行,一个字符串 \(S\)。
长度是5000000,
\(S\) 的每个字符要么是小写字母要么是大写字母。

输出

一个整数,\(ans\) 最后的值。

样例输入

aba
baababac

样例输出

4

数据范围限制

对于 \(40\%\) 的数据,\(T\) 的长度不超过100,且 \(S\) 的长度不超过10000。
对于 \(70\%\) 的数据,\(S\) 的长度不超过1000000。

提示

当 K=1时,S[1..3] = "baa",是T的同构串。
当 K=2时,S[2..4] = "aab",是T的同构串。
当 K=3时,S[3..5] = "aba",是T的同构串。
当 K=4时,S[4..6] = "bab",不是T的同构串。
当 K=5时,S[5..7] = "aba",是T的同构串。
当 K=6时,S[6..8] = "bac",不是T的同构串。

来源

基础篇练习2.3

信息

ID
1080
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者