1071.字符串的最大公因子 (Easy)*
题目描述*
对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。
返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。
示例*
输入:str1 = "ABABAB", str2 = "ABAB"
输出:"AB"
提示*
1 <= str1.length <= 1000, 1 <= str2.length <= 1000
str1[i] 和 str2[i] 为大写英文字母
代码*
如果 str1, str2 存在最大公因子串,那么应该有 str1 + str2 == str2 + str1。且子串长度应该就是两串长度的最大公因子,使用欧几里得算法求公因子。
class Solution {
int myGcd(int p, int q) {
return q == 0 ? p : gcd(q, p % q);
}
public:
string gcdOfStrings(string str1, string str2) {
int len1 = str1.length();
int len2 = str2.length();
if(str1 + str2 != str2 + str1) {
return "";
}
int len = myGcd(len1, len2);
return str1.substr(0, len);
}
};
最后更新: July 23, 2022