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