मान लीजिए हमारे पास एक फोन नंबर स्ट्रिंग के रूप में है। फोन नंबर में अंक, स्पेस और/या डैश '-' होते हैं। हम फोन नंबर को एक निश्चित तरीके से पुनः फॉर्मेट करना चाहते हैं। कुछ नियम हैं:
- शुरुआत में सभी स्पेस और डैश हटाएं
- बाएं से दाएं अंकों को लंबाई 3 के ब्लॉक में तब तक ग्रुप करें जब तक 4 या उससे कम अंक न बचें
- अंतिम अंकों को इस तरह ग्रुप करें:
- 2 अंकों के लिए: लंबाई 2 का एक ब्लॉक
- 3 अंकों के लिए: लंबाई 3 का एक ब्लॉक
- 4 अंकों के लिए: लंबाई 2 के दो ब्लॉक
ये ब्लॉक फिर डैश से जुड़े होते हैं। हमें पुनः फॉर्मेट किया गया फोन नंबर ढूंढना है।
इसलिए, यदि इनपुट है: s = "9-6-84102-4 7-8", तो आउटपुट "968-410-24-78" होगा।
हल करने के चरण
- digits := खाली स्ट्रिंग
- blk := खाली स्ट्रिंग
- s में प्रत्येक कैरेक्टर i के लिए:
- यदि i न्यूमेरिक है, तो blk := blk + i
- यदि blk का आकार == 3, तो: digits := digits + blk + "-", blk := खाली स्ट्रिंग
- यदि blk का आकार == 0, तो digits[:-1] वापस करें
- अन्यथा यदि blk का आकार == 1, तो digits[:-2] + "-" + digits[-2] + blk वापस करें
- अन्यथा यदि 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