Programming/LeetCode

[Dart] 1071. Greatest Common Divisor of Strings

Meezzi 2025. 4. 25. 09:34
728x90

1. 문제

https://leetcode.com/problems/greatest-common-divisor-of-strings/description/?envType=study-plan-v2&envId=leetcode-75

 

 

 

2. 요구사항

1) 두 문자열 str1과 str2가 주어졌을 때 가장 큰 공약수를 찾아야 한다.

2) 두 문자열의 공약수는 두 문자열을 여러 번 반복해서 만들 수 있는 문자열이다.

 

 

 

 

3. 코드

class Solution {
  String gcdOfStrings(String str1, String str2) {
    // 문자열을 이어붙였을 때 결과가 다르면 공통된 패턴이 없음
    if (str1 + str2 != str2 + str1) return '';

    // 유클리드 호제법을 이용한 최대공약수(GCD) 계산
    int gcd(int a, int b) {
      return b == 0 ? a : gcd(b, a % b);
    }

    // str1과 str2의 길이의 최대공약수를 구함
    int gcdLength = gcd(str1.length, str2.length);

    // str1에서 0부터 gcdLength만큼 잘라 반환
    return str1.substring(0, gcdLength);
  }
}

 

728x90