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

โปรแกรมจัดรูปแบบเบอร์โทรศัพท์ใน Python

โจทย์

มีเบอร์โทรเป็นสตริง (ตัวเลข, เว้นวรรค, -) จัดรูปแบบใหม่:

  1. ลบ Space และ Dash ทั้งหมด
  2. จัดกลุ่ม 3 ตัวจากซ้าย จนเหลือ 4 ตัวหรือน้อยกว่า
  3. จัดกลุ่มท้าย: 2→[2], 3→[3], 4→[2,2]
  4. เชื่อมด้วย Dash

ตัวอย่าง: s = "9-6-84102-4 7-8" → "968-410-24-78"

อัลกอริธึม

  1. เก็บเฉพาะตัวเลข
  2. สร้าง Block ขนาด 3 จนเหลือ ≤4
  3. จัดการ Block ท้ายตามกฎ

โค้ด Python


def solve(s):
    digits = ""
    blk = ""
    for i in s:
        if i.isnumeric():
            blk += i
        if len(blk) == 3:
            digits += blk + "-"
            blk = ""
    if len(blk) == 0:
        return digits[:-1]
    elif len(blk) == 1:
        return digits[:-2] + "-" + digits[-2] + blk
    elif len(blk) == 2:
        return digits + blk

s = "9-6-84102-4 7-8"
print(solve(s))  # Output: 968-410-24-78

Input / Output

Input:  "9-6-84102-4 7-8"
Output: 968-410-24-78