最大公約数のC ++文字列1071二百日の質問

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;
}
公開された38元の記事 ウォンの賞賛0 ビュー1030

おすすめ

転載: blog.csdn.net/Cyan1956/article/details/104813659