字符串的最大公因子<枚举>
1071. 字符串的最大公因子 - 力扣(LeetCode)
枚举法:
思路:答案肯定是字符串的某个前缀
前缀串的长度必然是两个字符串长度的约数。
str1的长度是len1,str2的长度是len2 令前缀长度为len
则有
len1 mod len == 0
len2 mod len == 0
所以从字符串长度较小的开始枚举,如果符合这个条件,len可能就是前缀出串的长度,再定义一个前缀和字符串的函数来判断,拼接若干次后是否符合。
class Solution {
bool check(string s,string t){
int m = s.size(),n = t.size();
int len = m / n;
string ans = "";
for(int i = 0; i < len;i++){
ans += t;
}
return ans == s;
}
public:
string gcdOfStrings(string str1, string str2) {
int len1 = str1.size(),len2 = str2.size();
for(int i = min(len1,len2); i > 0;i--){
if(len1 % i == 0 && len2 % i == 0) {
string X = str1.substr(0,i);
if(check(str1,X) && check(str2,X)) return X;
}
}
return "";
}
};