โจทย์
มีเบอร์โทรเป็นสตริง (ตัวเลข, เว้นวรรค, -) จัดรูปแบบใหม่:
- ลบ Space และ Dash ทั้งหมด
- จัดกลุ่ม 3 ตัวจากซ้าย จนเหลือ 4 ตัวหรือน้อยกว่า
- จัดกลุ่มท้าย: 2→[2], 3→[3], 4→[2,2]
- เชื่อมด้วย Dash
ตัวอย่าง: s = "9-6-84102-4 7-8" → "968-410-24-78"
อัลกอริธึม
- เก็บเฉพาะตัวเลข
- สร้าง Block ขนาด 3 จนเหลือ ≤4
- จัดการ 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