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

โปรแกรมค้นหาเวลาที่ถูกต้องล่าสุดโดยแทนที่ตัวเลขที่ซ่อนอยู่ใน Python


สมมติว่าเรามีสตริง s แทนเวลาในรูปของ hh:mm ตัวเลขบางตัวใน s ถูกซ่อนไว้ (แสดงโดย ?) เมื่อพิจารณาจากนาฬิกา 24 ชั่วโมง เวลาที่ถูกต้องคือระหว่าง 00:00 น. ถึง 23:59 น. เราต้องหาเวลาที่ถูกต้องล่าสุดที่เราได้จากเวลาโดยแทนที่ตัวเลขที่ซ่อนอยู่

ดังนั้น หากอินพุตเป็นแบบ s="1?:?5" ดังนั้นเอาต์พุตจะเป็น 13:55 เนื่องจากชั่วโมงล่าสุดที่ขึ้นต้นด้วยหลัก '2' คือ 23 และนาทีสุดท้ายที่ลงท้ายด้วยหลัก '0' คือ 50.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ans :=รายการใหม่

  • max_time :=['2','3',':','5','9']

  • ถ้า max_time[0] <'2' แล้ว

    • max_time[1] :='9'

  • ถ้า '9'>=max_time[1]> '3' แล้ว

    • max_time[0] :='1'

  • สำหรับแต่ละคู่ (mx, หลัก) จาก (max_time, s) ทำ

    • ถ้าหลักเป็นตัวเลขเดียว

      • ใส่ตัวเลขต่อท้าย ans

    • มิฉะนั้น

      • ใส่ mx ต่อท้าย ans

  • รวมอักขระที่มีอยู่ใน ans และส่งคืน

ตัวอย่าง (Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(s):
   ans = []
   max_time = ['2','3',':','5','9']
   if max_time[0] < '2':
      max_time[1] = '9'
   if '9' >= max_time[1] > '3':
      max_time[0] = '1'
   for mx,digit in zip(max_time,s):
      if digit.isdigit():
         ans.append(digit)
      else:
         ans.append(mx)
   return ''.join(ans)

s= "1?:?5"
print(solve(s))

อินพุต

"1?:?5"

ผลลัพธ์

13:55