मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s है जिसमें केवल अक्षर और '?' कैरेक्टर हैं, हमें सभी '?' कैरेक्टर्स को लोअरकेस अक्षरों में बदलना है ताकि अंतिम स्ट्रिंग में कोई लगातार दोहराव वाले कैरेक्टर न हों। यदि एक से अधिक समाधान हैं, तो उनमें से कोई भी वापस करें।
इसलिए, यदि इनपुट है: s = "hel??", तो आउटपुट "helab" होगा, क्योंकि पहला प्रश्न चिह्न 'l' को छोड़कर कुछ भी हो सकता है और जब पहला दिया जाता है, तो दूसरा 'a' को छोड़कर कुछ भी हो सकता है।
हल करने के चरण
- यदि s का आकार == 1:
- यदि s == "?", तो "a" वापस करें
- s वापस करें
- s := s में मौजूद कैरेक्टर्स की सूची
- i को 0 से s के आकार - 1 तक के लिए:
- यदि s[i] == "?":
- यदि i == 0 और s[i+1] == "?", तो s[i] := "a"
- अन्यथा यदि i == 0 और s[i+1] == "a", तो s[i] := "b"
- अन्यथा यदि i == 0, तो s[i] := "a"
- अन्यथा यदि i == (s का आकार)-1 और s[i-1] == "a", तो s[i] := "b"
- अन्यथा यदि i == (s का आकार)-1, तो s[i] := "a"
- अन्यथा यदि s[i-1] == "a" और s[i+1] == "?", तो s[i] := "b"
- अन्यथा यदि s[i+1] == "?", तो s[i] := "a"
- अन्यथा यदि (s[i-1] == "a" और s[i+1] == "b") या (s[i-1] == "b" और s[i+1] == "a"), तो s[i] := "c"
- अन्यथा यदि "a" in (s[i-1], s[i+1]), तो s[i] := "b"
- अन्यथा, s[i] := "a"
- यदि s[i] == "?":
- कैरेक्टर्स को स्ट्रिंग में जोड़कर s वापस करें
उदाहरण (Python)
def solve(s):
if len(s) == 1:
if s == "?":
return "a"
return s
s = list(s)
for i in range(len(s)):
if s[i] == "?":
if i == 0 and s[i+1] == "?":
s[i] = "a"
elif i == 0 and s[i+1] == "a":
s[i] = "b"
elif i == 0:
s[i] = "a"
elif i == len(s)-1 and s[i-1] == "a":
s[i] = "b"
elif i == len(s)-1:
s[i] = "a"
elif s[i-1] == "a" and s[i+1] == "?":
s[i] = "b"
elif s[i+1] == "?":
s[i] = "a"
elif (s[i-1] == "a" and s[i+1] == "b") or (s[i-1] == "b" and s[i+1] == "a"):
s[i] = "c"
elif "a" in (s[i-1], s[i+1]):
s[i] = "b"
else:
s[i] = "a"
return "".join(s)
s = "hel??"
print(solve(s))
इनपुट
"hel??"
आउटपुट
helab