সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি স্ট্রিং str প্রথম আর্গুমেন্ট ও একটি ইন্টিজার n دومা আর্গুমেন্ট হিসেবে নেবে। স্ট্রিংটি অ্যালফানিউমেরিক ক্যারেক্টার ও ড্যাশ দিয়ে গঠিত। ড্যাশগুলো অ্যালফানিউমেরিক ক্যারেক্টারগুলোকে গোষ্ঠীভাগ করে দিয়েছে। ড্যাশগুলো সম্ভবত ভুল জায়গায় আছে।
আমরা চাই প্রতিটি গোষ্ঠীর দৈর্ঘ্য K হয় (প্রথম গোষ্ঠী ছোট হতে পারে, তবে কমপক্ষে এক ক্যারেক্টার থাকতে হবে)। এই শর্ত পূরণের জন্য ড্যাশ পুনরায় ইনসার্ট করতে হবে। 더불어 স্ট্রিংয়ের সব ছোট হাতের অক্ষর বড় হাতের করতে হবে।
উদাহরণ:
const str = '8-4B0t37-k'; const num = 4;
আউটপুট হবে:
const output = '84B0-T37K';
আউটপুট ব্যাখ্যা:
স্ট্রিংটি দুটি অংশে ভাগ হয়েছে, প্রতিটি অংশে ৪টি ক্যারেক্টার।
উদাহরণ
কোডটি নিচের মতো (রিভার্স ইটারেশন):
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)); কোড ব্যাখ্যা
ধাপগুলো:
রিভার্সে ইটারেট করা হয়েছে যাতে প্রথম গোষ্ঠী ছোট হলে সেটি হ্যান্ডেল করা যায়।
ইনসার্ট করা ক্যারেক্টার কাউন্ট রাখা হয়েছে। ০ হলে ড্যাশ ইনসার্ট করে রিসেট করা হয়েছে।
আউটপুট
কনসোলে আউটপুট:
84B0-T37K