lc-go/solutions/10/q1071/solution.go

29 lines
659 B
Go

// Package q1071 implements a solution for https://leetcode.com/problems/greatest-common-divisor-of-strings/
package q1071
func isRepeatOf(segment, str string) bool {
if len(segment) > len(str) || len(segment) == 0 || len(str)%len(segment) != 0 {
return false
}
for len(str) > 0 {
if str[:len(segment)] != segment {
return false
}
str = str[len(segment):]
}
return true
}
func gcdOfStrings(str1 string, str2 string) string {
if len(str1) > len(str2) {
str1, str2 = str2, str1
}
for l := len(str1); l > 0; l-- {
if isRepeatOf(str1[:l], str1) && isRepeatOf(str1[:l], str2) {
return str1[:l]
}
}
return ""
}
var _ = gcdOfStrings