对于字符串 s 和 t,只有在 s = t + t + t + … + t + t(t 自身连接 1 次或多次)时,我们才认定 “t 能除尽 s”。
给定两个字符串 str1 和 str2 。返回 最长字符串 x,要求满足 x 能除尽 str1 且 x 能除尽 str2 。
示例 1:
输入:str1 = “ABCABC”, str2 = “ABC”
输出:“ABC”
示例 2:
输入:str1 = “ABABAB”, str2 = “ABAB”
输出:“AB”
示例 3:
输入:str1 = “LEET”, str2 = “CODE”
输出:“”
思路:首先判断只有str1+str2==str2+str1时候才会有公约的部分,在进入此判断条件后,只需要找二者长度的最大公约数,从0到这部分截取就可
class Solution {
public:
int gongyue(int x,int y){
int r=min(x,y);
while(x%r!=0 || y%r!=0) r--;
return r;
}
string gcdOfStrings(string str1, string str2) {
if(str1+str2==str2+str1){
int idx=gongyue(str1.size(),str2.size());
return str2.substr(0,idx);
}
string s="";
return s;
}
};