ধরুন A এবং B দুটি স্ট্রিং আছে। আমরা বলতে পারি A কে B দ্বারা বিভাজ্য, যখন A B এক বা একাধিকবার সংযুক্ত করে তৈরি হয়। তাই যদি A =“abcabc”, এবং B =“abc”, তাহলে A হল B দ্বারা বিভাজ্য। এই বিভাগে, আমরা দেখব কোন স্ট্রিং-এর সর্বশ্রেষ্ঠ সাধারণ ভাজক। তাই সবচেয়ে বড় স্ট্রিংটি ফেরত দিন যা উভয় স্ট্রিংকে বিভক্ত করে। তাই যদি দুটি স্ট্রিং হয় “ABABAB”, এবং “ABAB”, তাহলে GCD হবে “AB”
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- temp :=A এবং B এর মধ্যে ছোট স্ট্রিং
- m :=তাপমাত্রার দৈর্ঘ্য
- x :=1
- res হল একটি অ্যারে এবং res-এ "" সন্নিবেশ করান
- যখন A এবং B এর সাইজ x এর সাবস্ট্রিং আছে, তারপর রেস-এ সাবস্ট্রিং যোগ করুন এবং x কে 1 দ্বারা বাড়ান
- অবশেষে রেস অ্যারের শেষ উপাদানটি ফেরত দিন।
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
class Solution(object): def gcdOfStrings(self, str1, str2): if len(str1)<=len(str2): temp = str1 else: temp = str2 m = len(temp) x = 1 res=[""] while x<=m: if m%x==0 and temp[:x] * (len(str1)//x) == str1 and temp[:x] * (len(str2)//x) == str2: res.append(temp[:x]) x+=1 return res[-1] ob1 = Solution() print(ob1.gcdOfStrings("ABABAB","ABAB"))
ইনপুট
"ABABAB" "ABAB"
আউটপুট
AB