একটি ফোন নম্বর স্ট্রিং হিসেবে দেওয়া আছে যাতে ডিজিট, স্পেস এবং/অথবা ড্যাশ ('-') থাকতে পারে। নির্দিষ্ট নিয়মে রিফরম্যাট করতে হবে:
সব স্পেস এবং ড্যাশ মুছে দিন
বাম থেকে ডানে ৩-৩ ডিজিট করে ব্লক বানান যতক্ষণ ৪ বা তার কম ডিজিট বাকি থাকে
শেষ ডিজিটগুলো ব্লকে করুন:
- ২ ডিজিট: এক ব্লক দৈর্ঘ্য ২
- ৩ ডিজিট: এক ব্লক দৈর্ঘ্য ৩
- ৪ ডিজিট: দুটি ব্লক দৈর্ঘ্য ২ করে
ব্লকগুলো ড্যাশ দিয়ে জোড়া দিন
ইনপুট: s = "9-6-84102-4 7-8" → আউটপুট: "968-410-24-78"।
সমাধানের ধাপসমূহ
digits := "", blk := ""
s-এর প্রতিটি ক্যারেক্টার i-এর জন্য:
- যদি i ডিজিট হয়: blk += i
- যদি len(blk) == 3: digits += blk + "-", blk = ""
শেষ ব্লক হ্যান্ডল করুন:
- len(blk)==0: digits[:-1] রিটার্ন
- len(blk)==1: digits[:-2] + "-" + digits[-2] + blk
- len(blk)==2: digits + 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