मान लीजिए हमारे पास चार संभावित वर्णों "1", "2", "3" और "?" के साथ एक स्ट्रिंग s है। हम "?" के स्थान पर "1", "2" और "3" में से कोई एक रख सकते हैं। हमें सबसे छोटी संभव संख्या ढूंढनी है जिसे हम बना सकते हैं जैसे कि कोई दो आसन्न अंक समान न हों।
इसलिए, यदि इनपुट है s = "2??3?", तो आउटपुट होगा 21231।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
i := 0s :=sसे तत्वों की एक सूची- यदि
sका आकार < 2, तो:- यदि
s[i]"?"के समान है, तो:"1"लौटाएं
- यदि
- जब
i < sका आकार, करें:- यदि
s[i]"?"के समान है, तो:- यदि
i0 के समान है, तो:s[i] := "1"जबs[i + 1]"1"नहीं है अन्यथा"2"
- अन्यथा जब
i > 0औरi <= s का आकार - 2, तो:- यदि
s[i - 1]"1"के समान है, तो:- यदि
s[i + 1]"2"के समान है, तो:s[i] := "3"
- अन्यथा:
s[i] := "2"
- यदि
- अन्यथा जब
s[i - 1]"2"के समान है, तो:- यदि
s[i + 1]"1"के समान है, तो:s[i] := "3"
- अन्यथा:
s[i] := "1"
- यदि
- अन्यथा जब
s[i - 1]"3"के समान है, तो:- यदि
s[i + 1]"1"के समान है, तो:s[i] := "2"
- अन्यथा:
s[i] := "1"
- यदि
- यदि
- अन्यथा:
s[i] := "1"जबs[i - 1]"1"नहीं है अन्यथा"2"
i := i + 1
- यदि
sके आइटम को स्ट्रिंग में जोड़ें और लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(s): i = 0 s = list(s) if len(s) < 2: if s[i] == "?": return "1" while i < len(s): if s[i] == "?": if i == 0: s[i] = "1" if s[i + 1] != "1" else "2" elif i > 0 and i <= len(s) - 2: if s[i - 1] == "1": if s[i + 1] == "2": s[i] = "3" else: s[i] = "2" elif s[i - 1] == "2": if s[i + 1] == "1": s[i] = "3" else: s[i] = "1" elif s[i - 1] == "3": if s[i + 1] == "1": s[i] = "2" else: s[i] = "1" else: s[i] = "1" if s[i - 1] != "1" else "2" i += 1 return "".join(s) s = "2??3?" print(solve(s))इनपुट
"2??3?"
आउटपुट
21231
- यदि