題目:字符串的最大公因子
對于字符串 S
和 T
,只有在 S = T + ... + T
(T
與自身連接 1 次或多次)時,我們才認定 “T
能除盡 S
”。
返回最長字符串 X
,要求滿足 X
能除盡 str1
且 X
能除盡 str2
。
示例1:
輸入:str1 = "ABCABC", str2 = "ABC"
輸出:"ABC"
示例2:
輸入:str1 = "ABABAB", str2 = "ABAB"
輸出:"AB"
示例3:
輸入:str1 = "LEET", str2 = "CODE"
輸出:""
思路
-
X
一定是str1和str2的公共前綴 -
X
的長度肯定是len(str1)和len(str2)的最大公約數 - 判斷最大公約數長度的前綴是否能組成str1和str2
實現
func gcdOfStrings(str1 string, str2 string) string {
T := str1[:_gcd(len(str1), len(str2))]
if check(T, str1) && check(T, str2) {
return T
}
return ""
}
func check(t, s string) bool {
lenx := len(s) / len(t)
var ans string
for i := 1; i <= lenx; i++ {
ans = ans + t
}
return ans == s
}
func _gcd(x, y int) int {
tmp := x % y
if tmp > 0 {
return _gcd(y, tmp)
} else {
return y
}
}