กำหนด String s ตัวพิมพ์เล็ก มีแค่ตัวอักษรและ '?' แปลง '?' ทั้งหมดเป็นตัวพิมพ์เล็ก ให้ String สุดท้ายไม่มีตัวอักษรซ้ำติดกัน หาได้หลายคำตอบ ให้คำตอบใดก็ได้
Input: s = "hel??" → Output: helab '?' ตัวแรก ไม่เป็น 'l' ตัวที่สอง ไม่เป็น 'a'
ขั้นตอนการแก้ปัญหา
- ถ้า len(s) == 1: ถ้า s == "?" return "a" else return s
- s := List of Characters
- Loop i = 0 ถึง len(s)-1: ถ้า s[i] == "?":
- i == 0 และ s[i+1] == "?": s[i] = "a"
- Else if i == 0 และ s[i+1] == "a": s[i] = "b"
- Else if i == 0: s[i] = "a"
- Else if i == len(s)-1 และ s[i-1] == "a": s[i] = "b"
- Else if i == len(s)-1: s[i] = "a"
- Else if s[i-1] == "a" และ s[i+1] == "?": s[i] = "b"
- Else if s[i+1] == "?": s[i] = "a"
- Else if (s[i-1]=="a" และ s[i+1]=="b") หรือ (s[i-1]=="b" และ s[i+1]=="a"): s[i] = "c"
- Else if "a" in (s[i-1], s[i+1]): s[i] = "b"
- Else: s[i] = "a"
- Return s หลัง Join Characters
ตัวอย่าง 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))
Input
"hel??"
Output
helab