मान लीजिए कि हमारे पास दो तार s और t हैं, t अपरकेस में है। हमें यह जांचना है कि क्या हम निम्नलिखित ऑपरेशन करके s को t में बदल सकते हैं।
- कुछ छोटे अक्षरों को अपरकेस में बदलें।
- सभी छोटे अक्षरों को हटा दें।
इसलिए, यदि इनपुट s ="fanToM", t ="TOM" जैसा है, तो आउटपुट ट्रू होगा क्योंकि हम 'o' को 'O' में बदल सकते हैं फिर इसे t बनाने के लिए s से अन्य सभी लोअरकेस अक्षरों को हटा दें।पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=s का आकार, m :=t का आकार
- dp:=आकार का एक मैट्रिक्स (m + 1)x(n + 1) और गलत से भरें
- dp[0, 0] :=सच
- i के लिए 0 से लेकर s-1 के आकार तक के लिए
- जे के लिए 0 से टी के आकार के लिए, करें
- यदि dp[i, j] सत्य है, तो
- यदि j
- dp[i + 1, j + 1] :=सच
- यदि j
- यदि s[i] अपरकेस में नहीं है, तो
- dp[i + 1, j] :=सच
- यदि dp[i, j] सत्य है, तो
- जे के लिए 0 से टी के आकार के लिए, करें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(s,t): n = len(s) m = len(t) dp= [[False for i in range(m+1)] for i in range(n+1)] dp[0][0] = True for i in range(len(s)): for j in range(len(t)+1): if dp[i][j] == True: if j < len(t) and (s[i].upper() == t[j]): dp[i + 1][j + 1] = True if s[i].isupper()==False: dp[i + 1][j] = True return dp[n][m] s = "fanToM" t = "TOM" print(solve(s, t))
इनपुट
"fanToM", "TOM"
आउटपुट
True