मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें स्ट्रिंग s के विशिष्ट सबसीक्वेंस की संख्या गिननी है। यदि उत्तर बहुत बड़ा है तो परिणाम को 10^9 + 7 मॉड्यूलो वापस करें।
उदाहरण के लिए, यदि इनपुट s = "bab" है, तो आउटपुट 6 होगा क्योंकि 6 अलग-अलग अनुक्रम हैं, ये हैं "a", "b", "ba", "ab", "bb", "abb"।
हल करने के चरण
dp :=sके आकार का ऐरे और 0 से भरेंm := 10^9 + 7sमें प्रत्येक इंडेक्सiऔर आइटमcharके लिए:ind := s.rfind(char, 0, i)से i-वें कैरेक्टर का दायां इंडेक्सdp[i] := 1 + (sum(dp[:i]) % m) यदि ind == -1 अन्यथा (sum(dp[ind:i]) % m)
sum(dp) % mवापस करें।
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(s):
dp, m = [0] * len(s), 10**9 + 7
for i, char in enumerate(s):
ind = s.rfind(char, 0, i)
dp[i] = 1 + sum(dp[:i]) % m if ind == -1 else sum(dp[ind:i]) % m
return sum(dp) % m
s = "bab"
print(solve(s))
इनपुट
"bab"
आउटपुट
6