সমস্যা বিবরণ
একটি স্ট্রিং দেওয়া আছে। এটি কি কোনো সাবস্ট্রিং রিপিট করে বनेেছে (কমপ্লিটলি) তা চেক করতে হবে। সাবস্ট্রিং কমপক্ষে একবার রিপিট হতে হবে।
উদাহরণ:
- "aa" → true ("a" x2)
- "aaa" → true ("a" x3)
- "abcabcabc" → true ("abc" x3)
- "aba" → false
- "ababa" → false
সমাধান
const checkCombination = (str = '') => {
if (str.length == 1) return true;
for (let i = 1; i <= str.length / 2; i++) {
if (str.length % i !== 0) continue;
const sub = str.substring(0, i);
if (isRepeating(sub, str)) return true;
}
return false;
};
const isRepeating = (sub, str) => {
if (str.length > sub.length) {
let left = str.substring(0, sub.length);
let right = str.substring(sub.length, str.length);
return left === sub && isRepeating(sub, right);
}
return str === sub;
};
console.log(checkCombination('aa')); // true
console.log(checkCombination('aaa')); // true
console.log(checkCombination('abcabcabc')); // true
console.log(checkCombination('aba')); // false
console.log(checkCombination('ababa')); // false
আউটপুট
true true true false false
ব্যাখ্যা
- সম্ভাব্য সাবস্ট্রিং লেন্থ: ১ থেকে length/2 পর্যন্ত।
- লেন্থ স্ট্রিং লেন্থ দিয়ে বিভাজ্য হতে হবে।
- রিকার্সিভলি চেক করা হয় পুরো স্ট্রিং সাবস্ট্রিং রিপিট করে বনা কিনা।