Greatest Common Divisor of Strings | Problem No. 1071 | LeetCode |

Subscribe to my newsletter and never miss my upcoming articles

For two strings s and t, we say "t divides s" if and only if s = t + ... + t (t concatenated with itself 1 or more times)

Given two strings str1 and str2, return the largest string x such that x divides both str1 and str2.

Example 1: Input: str1 = "ABCABC", str2 = "ABC" Output: "ABC"

Example 2: Input: str1 = "ABABAB", str2 = "ABAB" Output: "AB"

Example 3: Input: str1 = "LEET", str2 = "CODE" Output: ""

Example 4: Input: str1 = "ABCDEF", str2 = "ABC" Output: ""

Constraints:

1 <= str1.length <= 1000 1 <= str2.length <= 1000 str1 and str2 consist of English uppercase letters.

class Solution {
public:
    string gcdOfStrings(string str1, string str2) {
        int s1 =str1.length(), s2 = str2.length();
        if(str1+str2 != str2+str1)
            return "";
        int ind = gcd(s1, s2);
        return str1.substr(0,ind);
    }

    int gcd(int a, int b){
        if(b ==0)
            return a;
        return gcd(b, a%b);
    }

};

No Comments Yet