字符串的最大公因子【leetcode每日一題】

在這裏插入圖片描述
其實最開始我的思路是找到str1和str2的最小週期串,然後比較比較兩個週期串是否相等,當然如果某個沒有周期的話直接返回空串。
後來看了一下題解,感覺學到了。。。。啊哈哈哈哈!
大致思路如下:

1.str1是由m個str組成的,str2是由n個str組成的,那麼m+n個str就等於n+m個str,所以只要判斷str1+str2==str2+str1就能判斷它是否具有最大公因子.
2.如果第一步滿足了,那麼我們直接求一串和二串長度的最大公約數,然後去一串(或二串)的前綴就可以了。
代碼如下:

class Solution {
public:
    string gcdOfStrings(string str1, string str2) {
        if(str1+str2!=str2+str1)    return "";
        int len1=str1.size(),len2=str2.size();
        int len=gcd(len1,len2);
        return str1.substr(0,len);
    }
    int gcd(int a,int b)    {return !b?a:gcd(b,a%b);}
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章