समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो पहली आर्ग्युमेंट के रूप में स्ट्रिंग str और दूसरी आर्ग्युमेंट के रूप में पूर्णांक n लेता है। स्ट्रिंग str अल्फ़ान्यूमेरिक अक्षरों और डैश से बनी होती है।
डैश स्ट्रिंग के भीतर अल्फ़ान्यूमेरिक अक्षरों को समूहों में विभाजित करते हैं। (यानी यदि 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));कोड व्याख्या
हमारे formatKey() फ़ंक्शन में उठाए गए चरण हैं:
हमने रिवर्स में पुनरावृति की, ताकि हम शेष अक्षरों < num के मामले को समायोजित कर सकें (चूंकि पहले भाग में ठीक num अक्षर होने की बाध्यता नहीं है)।
हमने डाले गए अक्षरों की गिनती रखी। और जब यह 0 था, तो हमने डैश डाला और num पर रीसेट किया।
आउटपुट
कंसोल में आउटपुट होगा:
84B0-T37K