Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình định dạng lại số điện thoại trong Python

Giả sử ta có số điện thoại dạng chuỗi chứa chữ số, dấu cách và/hoặc dấu gạch ngang '-'. Ta muốn định dạng lại theo quy tắc:

  1. Loại bỏ tất cả dấu cách và gạch ngang
  2. Nhóm các chữ số từ trái sang phải thành các khối độ dài 3 cho đến khi còn 4 hoặc ít chữ số hơn
  3. Các chữ số cuối cùng nhóm như sau:
    • 2 chữ số: một khối độ dài 2
    • 3 chữ số: một khối độ dài 3
    • 4 chữ số: hai khối độ dài 2
  4. Ghép các khối bằng dấu gạch ngang

Ví dụ: s = "9-6-84102-4 7-8", kết quả là "968-410-24-78".

Giải thuật

  1. digits := "", blk := ""
  2. Với mỗi ký tự i trong s:
    • Nếu i là số: blk += i
    • Nếu len(blk) == 3: digits += blk + "-", blk := ""
  3. Xử lý phần dư blk:
    • Nếu len(blk) == 0: trả về digits[:-1]
    • Nếu len(blk) == 1: trả về digits[:-2] + "-" + digits[-2] + blk
    • Nếu len(blk) == 2: trả về digits + blk

Ví dụ (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))

Input

"9-6-84102-4 7-8"

Output

968-410-24-78