28 lines
550 B
Go
28 lines
550 B
Go
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
|