本文主要是介绍1071.字符串的最大公因子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于字符串
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应该相等,
如果符合要求,那连接起来的字符串一定是由其最大公因数的子串连接的,所以只需要求最大公因数,然后从开头开始取出对应的字符串即可
class Solution {
public:string gcdOfStrings(string str1, string str2) {if(str1+str2!=str2+str1){return "";}else{int len1 = str1.length();int len2 = str2.length();int gcd = std::gcd(len1, len2); //C++17自带的求最大公因数的函数return str1.substr(0, gcd); //从索引0开始,取最大公因数个字符,其串即符合条件}}
};
这篇关于1071.字符串的最大公因子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!