สมมติว่าเรามีหมายเลขโทรศัพท์เป็นสตริง หมายเลขโทรศัพท์ประกอบด้วยตัวเลข ช่องว่าง และ/หรือขีดคั่น '-' เราต้องการฟอร์แมตหมายเลขโทรศัพท์ใหม่ในลักษณะบางอย่าง มีกฎเล็กน้อย -
-
ลบช่องว่างและขีดกลางทั้งหมดในตอนเริ่มต้น
-
จัดกลุ่มตัวเลขจากด้านซ้ายไปด้านขวาเป็นบล็อคที่มีความยาว 3 จนเหลือ 4 หลักหรือน้อยกว่า
-
ตัวเลขสุดท้ายจะถูกจัดกลุ่มเช่น −
-
สำหรับ 2 หลัก:บล็อกเดียวยาว 2
-
สำหรับตัวเลข 3 หลัก:บล็อกเดียวยาว 3
-
สำหรับ 4 หลัก:อีก 2 บล็อกยาว 2 ตัว
-
บล็อกเหล่านี้จะถูกมัดด้วยขีดกลาง เราต้องหาเบอร์โทรศัพท์ที่ฟอร์แมตแล้ว
ดังนั้น หากอินพุตเป็น s ="9-6-84102-4 7-8" เอาต์พุตจะเป็น “968-410-24-78”
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ตัวเลข :=สตริงว่าง
-
blk :=สตริงว่าง
-
สำหรับแต่ละอักขระ i ใน s ทำ
-
ถ้าฉันเป็นตัวเลขแล้ว
-
blk :=blk concatenate i
-
-
ถ้าขนาดของ blk เท่ากับ 3 แล้ว
-
digits :=digits concatenate blk concatenate dash("-")
-
blk :=สตริงว่าง
-
-
-
ถ้าขนาดของ blk เท่ากับ 0 แล้ว
-
คืนค่าสตริงย่อยของตัวเลขจากดัชนี 0 เป็นขนาดของตัวเลข -1]
-
-
มิฉะนั้นเมื่อขนาดของ blk เท่ากับ 1 แล้ว
-
ส่งคืนสตริงย่อยของตัวเลขจากดัชนี 0 ถึงขนาดของตัวเลข-2] เชื่อม dash("-") เชื่อมอักขระตัวที่สองตัวสุดท้ายของตัวเลขต่อกัน blk
-
-
มิฉะนั้นเมื่อขนาดของ blk เท่ากับ 2 แล้ว
-
ส่งคืนตัวเลขต่อ blk
-
ตัวอย่าง (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))
อินพุต
"9-6-84102-4 7-8"
ผลลัพธ์
968-410-24-78