একটি লোয়ারকেস স্ট্রিং s দেওয়া আছে যাতে শুধু অক্ষর এবং '?' রয়েছে। সব '?' কে লোয়ারকেস লেটারে রিপ্লেস করতে হবে যাতে ফাইনাল স্ট্রিং-এ কোনো দুটি সন্নিহিত ক্যারেক্টর একই নয়। একাধিক সমাধান থাকলে যেকোনো একটি দিন।
ইনপুট: s = "hel??" → আউটপুট: helab। প্রথম '?' 'l' ছাড়া যেকোনো কিছু (এখানে 'a'), দ্বিতীয় '?' 'a' ছাড়া যেকোনো কিছু (এখানে 'b')।
সমাধানের ধাপসমূহ
যদি len(s) == 1: '?' হলে 'a' রিটার্ন, অন্যথায় s রিটার্ন
s কে লিস্টে কনভার্ট করুন
প্রতিটি i = 0 থেকে len(s)-1:
- যদি s[i] == '?':
- i==0 এবং s[1]=='?': s[0]='a'
- i==0 এবং s[1]=='a': s[0]='b'
- i==0: s[0]='a'
- i==last এবং s[i-1]=='a': s[i]='b'
- i==last: 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' ∈ (s[i-1], s[i+1]): s[i]='b'
- অন্যথায়: s[i]='a'
- যদি s[i] == '?':
জয়েন করে রিটার্ন করুন
উদাহরণ (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