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:
- Loại bỏ tất cả dấu cách và gạch ngang
- 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
- 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
- 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
digits := "",blk := ""- Với mỗi ký tự
itrongs:- Nếu
ilà số:blk += i - Nếu
len(blk) == 3:digits += blk + "-",blk := ""
- Nếu
- 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
- Nếu
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