मान लीजिए हमारे पास समान लंबाई के दो स्ट्रिंग्स s और t हैं। एक ऑपरेशन पर विचार करें जहां हम एक स्ट्रिंग में दो इंडेक्स चुनते हैं (जरूरी नहीं कि अलग हों) और चयनित इंडेक्स पर वर्णों को स्वैप करते हैं। हमें जांचना है कि क्या दोनों स्ट्रिंग्स को ठीक एक स्ट्रिंग पर अधिकतम एक स्ट्रिंग स्वैप करके समान बनाना संभव है या नहीं।
उदाहरण के लिए, यदि इनपुट s = "hello" t = "hlelo" है, तो आउटपुट True होगा क्योंकि हमें s या t में 'e' और 'l' को स्वैप करके उन्हें समान बनाने की आवश्यकता है।
हल करने के चरण
max_diffs := 2
diffs := 0
st := एक नया सेट
st2 := एक नया सेट
i को 0 से s के आकार तक की रेंज में लिए करें
यदि s[i], t[i] के समान नहीं है, तो
diffs := diffs + 1
यदि s[i], st में मौजूद नहीं है, तो
s[i] को st में डालें
यदि t[i], st2 में मौजूद नहीं है, तो
t[i] को st2 में डालें
यदि diffs > max_diffs, तो
False वापस करें
यदि (diffs, 0 के समान है या diffs, 2 के समान है) और st का आकार st2 के आकार के समान है और st, st2 के समान है, तो true वापस करें, अन्यथा false
उदाहरण
def solve(s, t):
max_diffs = 2
diffs = 0
st = set()
st2 = set()
for i in range(len(s)):
if s[i] != t[i]:
diffs += 1
if s[i] not in st:
st.add(s[i])
if t[i] not in st2:
st2.add(t[i])
if diffs > max_diffs:
return False
return (diffs == 0 or diffs == 2) and len(st) == len(st2) and st == st2
s = "hello"
t = "hlelo"
print(solve(s, t))
इनपुट
"hello", "hlelo"
आउटपुट
True