1071 GCD文字列
文字列SとT、唯一のS = T + ... +時間T(Tは、それ自体に1回以上接続されている)のために、私たちは「T Sを割り切れることができます。」識別しました
戻り値は、最長の文字列X、Xは、要件を満たすことができ、そしてXは割り切れ割り切れstr1はstr2をすることができます。
例1:
入力:STR1 = "ABCABC"、STR2 = "ABC"
出力: "ABC"
例2:
入力:STR1 = "ABABAB"、STR2 = "ABAB"
出力: "AB"
例3:
入力:STR1 = "LEET"、STR2 = "CODE"
出力: ""
ヒント:
1 <= str1.length <= 1000
。1 <= str2.length <= 1000
0009 [I]とstr2 [i]は大文字
思考
STR1 + str2の== str2の+ str1は確かに存在する共通の要因。そして、文字列は、最大の共通因子の長さの最大公約数でなければなりません。
私の答え
class Solution {
public:
string gcdOfStrings(string str1, string str2) {
int lenStr1 = str1.length();
int lenStr2 = str2.length();
if (str1 + str2 == str2 + str1) {
return str1.substr(0,gcd(lenStr1, lenStr2));
}
else return "";
}
};
inline int gcd(int a, int b) {
if (b) while ((a %= b) && (b %= a));
return a + b;
}