मान लीजिए दो स्ट्रिंग्स A और B हैं। हम कह सकते हैं कि A, B से विभाज्य है, जब A, B को एक या अधिक बार कंकेटनेट करके बनाया जाता है। इसलिए यदि A = "abcabc", और B = "abc", तो A, B से विभाज्य है। इस खंड में, हम देखेंगे कि स्ट्रिंग का ग्रेटेस्ट कॉमन डिवाइजर क्या है। इसलिए सबसे बड़ी स्ट्रिंग लौटाएं जो दोनों स्ट्रिंग्स को विभाजित करती है। इसलिए यदि दो स्ट्रिंग्स "ABABAB" और "ABAB" हैं, तो GCD "AB" होगा।
समाधान के चरण
- temp := A और B के बीच छोटी स्ट्रिंग
- m := temp की लंबाई
- x := 1
- res एक ऐरे है और इसमें "" इन्सर्ट करें
- जब तक A और B में आकार x का सबस्ट्रिंग हो, तब सबस्ट्रिंग को res में जोड़ें, और x को 1 से बढ़ाएं
- अंत में res ऐरे में अंतिम एलिमेंट लौटाएं।
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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