[문자열] C014_ 문자열 GCD (최대 공약수)

하나, 제목 설명

对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。
返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。

输入:str1 = "ABCABC", str2 = "ABC"
输出:"ABC"

둘째, 문제 해결 방법

방법 1 : GCD

GCD는 : 정수의 수를 X 경우, x는 나눌 수 있습니다 경우 모두 A와 B는 다음 x는 최대 공약수의 A, B이다.

문자열의 경우 : X는 A, B는 동시 나눌 될 수 있다면 . 이자형 ( ) = = . 이자형 ( ) a.append (b) == b.append (a) ;

이들이 공통 요소 AB 및있는 경우 또한, S1은 다음 m은 "AB"인, S2는 N "AB"는 일 "AB"를 함께 넣어 m + N이다.

간단하게 마지막 문자열 또는 b 길이의 최대 공약수로 돌아갑니다.

public String gcdOfStrings(String s1, String s2) {
  if (s1 == null || s2 == null) {
      return null;
  } else if (!(s1 + s2).equals(s2 + s1)) {
      return "";
  }
  return s1.substring(0, gcd(s1.length(), s2.length()));
}
int gcd (int a, int b) {
  if (a == 0 || b == 0)
      return a == 0 ? b : a;
  return gcd(b, a % b);
}

복잡도 분석

  • 시간 복잡성 : ( ( ) ) O (로그 (N)) ,
  • 우주의 복잡성 : ( 1 ) O (1) ,
게시 된 495 개 원래 기사 · 원 찬양 (105) ·은 30000 +를 볼

추천

출처blog.csdn.net/qq_43539599/article/details/104812846