> 웹 프론트엔드 > JS 튜토리얼 > Javascript에서 문자열의 최대 공약수

Javascript에서 문자열의 최대 공약수

Linda Hamilton
풀어 주다: 2024-11-21 07:11:10
원래의
652명이 탐색했습니다.

Greatest Common Divisor of Strings in Javascript
오늘은 LeetCode 75 시리즈의 두 번째 문제를 풀어보았습니다. 제가 이 문제에 어떻게 접근했는지 공유하고 싶습니다.

문제 설명:
str1과 str2라는 두 개의 문자열이 제공됩니다. x가 str1과 str2를 모두 나누는 가장 큰 문자열 x를 반환합니다.

예:

입력: str1 = "ABCABC", str2 = "ABC"
출력: "ABC"

입력: str1 = "ABABAB", str2 = "ABAB"
출력: "AB"

입력: str1 = "LEET", str2 = "CODE"
출력: ""
**
나의 접근방식**

저는 솔루션을 세 부분으로 나누었습니다.

공약수 문자열이 있는지 확인:
먼저 str1 str2와 str2 str1을 연결하여 공약수가 있는지 확인합니다.

연결된 두 문자열이 같지 않으면 공약수가 없다는 의미이며 함수는 빈 문자열("")을 반환합니다.

GCD 길이 찾기:
다음으로 str1과 str2 길이의 GCD를 구합니다.

재귀적 gcd() 함수를 사용합니다. b !== 0이면 함수는 두 개의 인수를 사용하여 자신을 재귀적으로 호출합니다.
gcd(a, b) = gcd(b, a % b)
b = 0이면 함수는 GCD 길이인 a를 반환합니다.

계산 예:

초기 호출: gcd(6, 3)
b = 3은 0이 아니므로 gcd(3, 6 % 3) → gcd(3, 0)

을 재귀적으로 호출합니다.

두 번째 호출: gcd(3, 0)
이제 b = 0이므로 함수는 3을 반환합니다.

GCD 하위 문자열 추출:
마지막으로 gcdlength를 사용하여 str1에서 하위 문자열을 추출합니다.

function gcdOfStrings(str1, str2) {
  // recursive function to calculate the GCD of two numbers
  function gcd(a, b) {
    console.log(a, b);
    return b === 0 ? a : gcd(b, a % b);
  }

  // Step 1: Check if str1 and str2 match or not
  if (str1 + str2 !== str2 + str1) {
    return ""; // No common pattern exists
  }

  // Step 2: Find the GCD of the lengths of str1 and str2
  const len1 = str1.length;
  const len2 = str2.length;
  const gcdLength = gcd(len1, len2);

  // Step 3: The largest divisor substring
  return str1.substring(0, gcdLength);
}

// Example usage:
console.log(gcdOfStrings("ABCABC", "ABC")); // Output: "ABC"
console.log(gcdOfStrings("ABABAB", "ABAB")); // Output: "AB"
console.log(gcdOfStrings("LEET", "CODE")); // Output: ""

로그인 후 복사

더 나은 솔루션이나 아이디어가 있으면 언제든지 공유해 주세요.

위 내용은 Javascript에서 문자열의 최대 공약수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿