leetcode1071 : GCD 문자열

제목은 주어진 str1과 str2와 두 개의 문자열, 문자열을 나눌 요구 사항을 의미 이해 X.

STR1 및 STR2 여러 X. 표현 될 수 있음을 의미 나눌

문자열,보다 큰 크기의 문자열 또는 1과 동일한 같은 X.

STR1 = AX
STR2 = BX

목적은 X를 추구하는 것입니다

상기 식으로부터, 제 나누어 여부를 만족시킬 때, 나눌 수있다 결정될 수있다 STR1 STR2 + = + STR2 STR1

그리고, 만족 후 GCD 알고리즘, 즉, 유클리드 알고리즘으로 나눌 수.

유클리드 : 두 수의 최대 공약수는 두 개의 큰 / 작은 수의 수와 두 번째 공약수로 나눈 나머지와 동일

나머지가 0 다음 두 수의 최대 공약수는 현재 제수 같다 때까지보기는 두 번째로 나눈 재귀 방식을 사용하는 것입니다.

무관 STR1 및 STR2의 길이 때문에 [두 수의 최대 공약수는 나머지의 최대 공약수로 나눈 두 큰 / 더 작은 수와 두 숫자 개수와 동일하다]

나머지보다 더 큰 / 작은 수를 가지고 잘 이동합니다.

  int gcd(int a,int b) { return !b? a:gcd(b,a%b); }

    string gcdOfStrings(string str1, string str2) {
           return (str1+str2) == (str2 + str1) ? str1.substr(0, gcd( str1.size(), str2.size()))  : "";
    }
게시 44 개 원래 기사 · 원의 찬양 (51) ·은 80000 +를 볼

추천

출처blog.csdn.net/Hanghang_/article/details/104906066