문자열 GCD

/ * 문자열 GCD 
용 문자열 S 및 단 S = T + ... + T T ( T는 자체에 1 회 이상 연결된다), 우리는 "T S 나눌 수있다."식별
반환 가장 긴 문자열 X, X는 요구 사항을 충족 할 수 있으며, X는 나눌 나눌 str1과의 STR2 될 수 있습니다.
실시 예 1 :
입력 : STR1 = "ABCABC"STR2 = "ABC"
출력 "ABC"
실시 예 2 :
입력 : STR1 = "ababab와"STR2 = "ABAB"
출력 "AB"
링크 : HTTPS : // leetcode- cn.com/problems/greatest-common-divisor-of-strings*/
// 직접 문제 해결 방안 (정확한 결과는 효율이 매우 좋지 않다)
공공 정적 스트링 gcdOfStrings (문자열 STR1, STR2 문자열) { 
INT LEN1 str1.length = ();
INT LEN2 str2.length = ();
모두 StringBuilder SB = 새의 StringBuilder ();
경우 (LEN1> = LEN2) {
위해은 (INT 난 = 0; I <LEN2; I ++) {
경우 (LEN1 %의 (LEN2 - I) == 0 && LEN2 % (LEN2 - I) == 0) {
문자열 부분 문자열 = (0을 LEN2 - Ⅰ) str2.substring;
경우 ( "".equals (str1.replaceAll (서브 스트링, "")) && "".equals (str2.replaceAll (서브 스트링, ""))) {
리턴 스트링;
}
}
}
}가 다른 {
위해은 (나는 <LEN1; INT 난 = 0 난 ++) {
{(- - I) == 0 && LEN2 % (LEN1 I) == 0 LEN1 % (LEN1) 만약
문자열 문자열 str1.substring = (0, LEN1 - I);
경우 ( "".equals (str1.replaceAll (서브 스트링, "")) && "".equals (str2.replaceAll (서브 스트링, ""))) {
리턴 스트링;
}
}
}
}

""를 반환;
}
第二种// 
//辗转相除法
공개 정적 INT의 GCD (a, INT의 B를 INT) {
경우 (a %의 B == 0) {
리턴 B;
} {다른
리턴 GCD (B, A의 % B);
}
}
공공 정적 스트링 gcdOfStrings2 (문자열 STR1, STR2 문자열) {
INT LEN1 str1.length = ();
INT LEN2 str2.length = ();
INT GCD = 0;
경우 (LEN1> = LEN2) {
GCD = GCD (LEN1, LEN2);
사용한다} else {
GCD = GCD (LEN2, LEN1);
}
문자열 문자열 str1.substring = (0, GCD);
")) &&" "/*if("".equals(str1.replaceAll(substring".equals (str2.replaceAll는 ( "서브 스트링"))) {
리턴 스트링;




""를 반환;
}

추천

출처www.cnblogs.com/CoderRdf/p/12469751.html