সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা শুধুমাত্র যুক্তি হিসাবে অক্ষরের একটি স্ট্রিং নেয়। আমাদের ফাংশনটির একটি সাবস্ট্রিং নিয়ে এবং সাবস্ট্রিংটির একাধিক কপি একসাথে যুক্ত করে স্ট্রিং স্ট্র তৈরি করা যায় কিনা তা পরীক্ষা করতে হবে৷
উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −
const str = 'thisthisthisthis';
তারপর আউটপুট −
হওয়া উচিতconst output = true;
আউটপুট ব্যাখ্যা:
কারণ 'এই' স্ট্রিংটি বারবার যুক্ত করে স্ট্রিং তৈরি করা হয়।
উদাহরণ
এর জন্য কোড হবে −
const str = 'thisthisthisthis'; const repeatedSubstring = (str = '') => { const {length} = str; const checkSubString = ss => { const m = ss.length; for (let i = 0; i < length; i += m) for (let j = 0; j < m; j++) if (str[i+j] !== ss[j]) return false; return true; }; let factor = 2, len; while (length/factor >= 1){ while (length % factor) factor++; len = length/factor; if (checkSubString(str.substring(0,len))){ return true; }; factor++; }; return false; }; console.log(repeatedSubstring(str));
কোড ব্যাখ্যা:
প্রথমত, আমরা সাবস্ট্রিং প্যাটার্ন চেকিং ফাংশন সেট আপ করি।
তারপরে আমরা সমস্ত সম্ভাব্য কারণগুলির মাধ্যমে পুনরাবৃত্তি করেছি যা স্ট্রিং স্ট্রকে সমানভাবে ভাগ করে, একটি কার্যকর পুনরাবৃত্তি প্যাটার্ন পাওয়া গেছে কিনা তা নির্ধারণ করতে।
আউটপুট
এবং কনসোলে আউটপুট হবে −
true