समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो पहले तर्क के रूप में एक स्ट्रिंग str लेता है और दूसरे तर्क के रूप में एक इंटीजर, n। स्ट्रिंग स्ट्र अल्फ़ान्यूमेरिक वर्णों और डैश से बना है।
डैश स्ट्रिंग के भीतर अल्फ़ान्यूमेरिक वर्णों को समूहों में विभाजित करता है। (अर्थात यदि n डैश हैं, तो स्ट्रिंग को n+1 समूहों में विभाजित किया जाता है)। दिए गए स्ट्रिंग में डैश संभवतः गलत हैं।
हम चाहते हैं कि वर्णों का प्रत्येक समूह K लंबाई का हो (संभवतः पहले समूह को छोड़कर, जो छोटा हो सकता है, लेकिन फिर भी उसमें कम से कम एक वर्ण होना चाहिए)।
इस आवश्यकता को पूरा करने के लिए, हम फिर से डैश डालेंगे। इसके अलावा, हमारे फ़ंक्शन को स्ट्रिंग के सभी लोअरकेस अक्षरों को अपरकेस में बदलने की आवश्यकता है।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const str = '8-4B0t37-k'; const num = 4;
तब आउटपुट होना चाहिए -
const output = '84B0-T37K';
आउटपुट स्पष्टीकरण:
स्ट्रिंग str को दो भागों में विभाजित किया गया है, प्रत्येक भाग में 4 वर्ण हैं।
उदाहरण
इसके लिए कोड होगा -
const str = '8-4B0t37-k'; const num = 4; const formatKey = (str = '', num = 1) => { let acc = ''; let flag = num; for(let i = str.length - 1; i >= 0; i--){ const char = str.charAt(i); if(char !== '-') { if(flag === 0) { acc = `-${acc}`; flag = num; }; acc = `${char.toUpperCase()}${acc}`; flag -= 1; }; }; return acc; }; console.log(formatKey(str, num));
कोड स्पष्टीकरण
हमने अपने फंक्शन फॉर्मेटकी () में जो कदम उठाए हैं, वे हैं -
-
हमने रिवर्स में पुनरावृति की, ताकि हम शेष वर्णों के मामले में समायोजित कर सकें
-
हमने सम्मिलित वर्णों की गिनती रखी। और जब यह 0 था, हमने डैश डाला और num पर रीसेट कर दिया।
आउटपुट
और कंसोल में आउटपुट होगा -
84B0-T37K