Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตัวหารร่วมที่ยิ่งใหญ่ที่สุดของสตริงใน Python


สมมติว่ามีสองสตริง A และ B เราสามารถพูดได้ว่า A หารด้วย B ลงตัว เมื่อ A ถูกสร้างขึ้นโดยการต่อ B อย่างน้อยหนึ่งครั้ง ดังนั้น ถ้า A =“abcabc” และ B =“abc” ดังนั้น A จะหารด้วย B ลงตัว ในส่วนนี้ เราจะมาดูกันว่าตัวหารร่วมมากของ string คืออะไร ส่งคืนสตริงที่ใหญ่ที่สุดที่แบ่งทั้งสองสตริง ดังนั้น หากสองสตริงคือ “ABABAB” และ “ABAB” ดังนั้น GCD จะเป็น “AB”

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • temp :=สตริงที่สั้นกว่าระหว่าง A และ B
  • m :=ความยาวของอุณหภูมิ
  • x :=1
  • res เป็นอาร์เรย์และแทรก “” ลงใน 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