1. 程式人生 > >京東線上程式設計-相似字串

京東線上程式設計-相似字串

題目描述:

對於僅由小寫字母組成得字串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")