Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมแทนที่ Question Marks เพื่อไม่ให้ตัวอักษรซ้ำติดกันใน Python

กำหนด 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