题目描述:
对于仅由小写字母组成得字符串A和B,如果,分别存在一个小写字母a到z的排列,使得A中所有字母a替换为排列得第一个字母,所有字母b替换为排列得第二个字母......所有z替换为排列得最后一个字母之后,A和B完全相同,那么称字符串A和B相似,如abcc和xyaa。现在给定仅由小写字母组成且长度不超过10^5得字符串S和T,求S中有多少字串与T相似?
输入:
第一行和第二行分别输入字符串S和T。
输出:
输出字符串S中与T相似得字串数目?
样例输入:
ababcb
xyx
样例输出:
3
解释:
S中与T中相似得子串分别是aba,bab,bcb,总共3个。
代码:
def solve(S, T):
if S==None or T==None: #当时忘了这种情况,通过率50%
return 0
ns=len(S)
nt=len(T)
if ns<nt:
return 0
m=0
for i in range(ns-nt+1):
dic={}
for j in range(nt):
if T[j] not in dic:
dic[T[j]]=S[i+j]
else:
if dic[T[j]]!=S[i+j]:
break
if j==nt-1 and dic[T[j]]==S[i+j]:
m+=1
return m
#******************************结束写代码******************************
try:
_S = input()
except:
_S = None
try:
_T = input()
except:
_T = None
res = solve(_S, _T)
print(str(res) + "\n")