LC 1071 Greatest Common Divisor Of Strings
- Implementation
- Tests
// 1071. Greatest Common Divisor of Strings
// For two strings s and t, we say "t divides s" if and only if s = t + t + t + ... + t + t (i.e., t is concatenated with itself one 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: ""
// Constraints:
// 1 <= str1.length, str2.length <= 1000
// str1 and str2 consist of English uppercase letters.
const gcdOfStrings = (str1, str2) => {
if (str1 + str2 === str2 + str1) {
const gcd = (a, b) => b === 0 ? a : gcd(b, a % b);
const gcdLength = gcd(str1.length, str2.length);
return str1.slice(0, gcdLength);
} else return ""
}
console.log(gcdOfStrings("ABCABC", "ABC"));
console.log(gcdOfStrings("ABABAB", "ABAB"));
console.log(gcdOfStrings("LEET", "CODE"));
export { gcdOfStrings }
// Test stub for 12.1071.GreatestCommonDivisorOfStrings
describe('12.1071.GreatestCommonDivisorOfStrings', () => {
it('should have a test stub', () => {
expect(true).toBe(true);
});
});