Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm số điện thoại được định dạng lại bằng Python

Giả sử chúng ta có một số điện thoại dưới dạng chuỗi. Số điện thoại bao gồm các chữ số, dấu cách và / hoặc dấu gạch ngang '-'. Chúng tôi muốn định dạng lại số điện thoại theo một cách nhất định. Có một số quy tắc -

  • Xóa tất cả dấu cách và dấu gạch ngang ở đầu

  • Nhóm các chữ số từ bên trái sang bên phải thành các khối có độ dài 3 cho đến khi còn lại 4 chữ số trở xuống.

  • Các chữ số cuối cùng sau đó được nhóm lại như -

    • Đối với 2 chữ số:Một khối duy nhất có độ dài 2.

    • Đối với 3 chữ số:Một khối duy nhất có độ dài 3.

    • Đối với 4 chữ số:Thêm hai khối có độ dài mỗi khối là 2.

Các khối này sau đó được ghép lại bởi các dấu gạch ngang. Chúng tôi phải tìm số điện thoại đã được định dạng lại.

Vì vậy, nếu đầu vào là s =​​"9-6-84102-4 7-8", thì đầu ra sẽ là "968-410-24-78"

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • chữ số:=một chuỗi trống

  • blk:=một chuỗi trống

  • đối với mỗi ký tự tôi trong s, thực hiện

    • nếu tôi là số, thì

      • blk:=blk nối i

    • nếu kích thước của blk bằng 3 thì

      • chữ số:=chữ số nối liền dấu gạch ngang nối liền blk ("-")

      • blk:=một chuỗi trống

  • nếu kích thước của blk bằng 0 thì

    • trả về chuỗi con của các chữ số từ chỉ mục 0 đến kích thước của các chữ số-1]

  • ngược lại khi kích thước của blk bằng 1 thì

    • trả về chuỗi con của các chữ số từ chỉ số 0 đến kích thước của các chữ số-2] dấu gạch ngang nối ("-") nối ký tự cuối cùng thứ hai của các chữ số được nối blk

  • ngược lại khi kích thước của blk bằng 2 thì

    • trả về các chữ số nối blk

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

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

Đầu ra

968-410-24-78