আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি ক্যারেক্টার স্ট্রিং (str) প্রথম আর্গুমেন্ট এবং একটি সংখ্যা (num) দ্বিতীয় আর্গুমেন্ট হিসেবে গ্রহণ করবে।
ফাংশনটি প্রদত্ত স্ট্রিং থেকে ঠিক num দৈর্ঘ্যের সকল সম্ভাব্য প্যালিনড্রোম স্ট্রিংয়ের সংখ্যা গণনা করে রিটার্ন করবে।
উদাহরণস্বরূপ —
ইনপুট স্ট্রিং এবং সংখ্যা যদি হয় —
const str = 'ij'; const num = 4;
তাহলে আউটপুট হবে —
const output = 4;
কারণ চারটি সম্ভাব্য প্যালিনড্রোম হলো —
'iiii', 'jjjj', 'ijji', 'jiij'
অ্যাপরোচ:
প্রথমে প্রদত্ত স্ট্রিংয়ের অনন্য অক্ষরগুলোর সংখ্যা হ্যাশ সেট দিয়ে গণনা করব। যদি প্যালিনড্রোমের দৈর্ঘ্য বিজোড় হয়, তবে মাঝপথের ক্যারেক্টারের জন্য u চয়েস থাকবে, যেখানে u হলো অনন্য ক্যারেক্টারের সংখ্যা।
যখন num জোড়, সম্ভাবনা হবে —
power(u, num/2)
যখন num বিজোড়, এই সংখ্যাকে u দিয়ে গুণ করতে হবে কারণ মাঝপথের পজিশনের জন্য u চয়েস আছে।
উদাহরণ
নিচের কোডটি দেখুন:
const str = 'ij'; const num = 4;
const findValidPalindromes = (str = '', num = 1) => {
const set = new Set();
for(let i = 0; i < str.length; i++){
const el = str[i];
set.add(el);
};
const u = set.size;
if(num & 1){
return Math.pow(u, num/2) * u;
}else{
return Math.pow(u, num/2);
};
};
console.log(findValidPalindromes(str, num));
আউটপুট
কনসোল আউটপুট:
4