Greatest Common Divisor of Strings
💻 coding

Greatest Common Divisor of Strings

1 min read 196 words
1 min read
ShareWhatsAppPost on X
  • 1The greatest common divisor of strings is the largest string that can divide both input strings.
  • 2To determine if one string divides another, it must be able to concatenate to form the other string.
  • 3The algorithm operates with a time complexity of O(m+n) and a space complexity of O(1).

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The greatest common divisor of strings is the largest string that can divide both input strings."

Greatest Common Divisor of Strings

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

Return the largest string X such that X divides str1 and X divides 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: ""

Note:

1 <= str1.length <= 1000

1 <= str2.length <= 1000

str1[i] and str2[i] are English uppercase letters.

Solution:

using System;
using System.Collections.Generic;
using System.Text;

namespace LeetCode.AskGif.Easy.String
{
 class GcdOfStringsSln
 {
 public void execute()
 {
 var str1 = "ABABAB";
 var str2 = "ABAB";
 var res = GcdOfStrings(str1, str2);
 }

 public string GcdOfStrings(string str1, string str2)
 {
 if (str1 + str2 != str2 + str1) return "";
 if (str1 == str2) return str1;
 int len1 = str1.Length;
 int len2 = str2.Length;

 while (len2 > 0)
 {
 int temp = len2;
 len2 = len1 % len2;
 len1 = temp;
 }

 return str1.Substring(0, len1);
 }
 }
}

Time Complexity: O(m+n) where m and n are the lengths of the string.

Space Complexity: O(1)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

AskGif

Published on 5 May 2020 · 1 min read · 196 words

Part of AskGif Blog · coding

You might also like