> Java > java지도 시간 > 문자열을 교대로 병합

문자열을 교대로 병합

Barbara Streisand
풀어 주다: 2025-01-06 16:18:42
원래의
606명이 탐색했습니다.

Merge Strings Alternately

코더 여러분! 당신이 잘 지내기를 바랍니다. 코딩 인터뷰를 준비하는 데 도움이 되는 75가지 필수 문제를 다루는 LeetCode-75 시리즈의 솔루션을 공유하게 되어 기쁩니다.

각 게시물에서는 내 접근 방식에 대한 자세한 설명과 함께 솔루션을 제시하겠습니다. 질문이나 개선을 위한 제안 사항을 댓글로 남겨주세요. 나는 당신과 협력하고 논의하기를 기대하고 있습니다! 즐거운 코딩하세요!

여기에 문제에 대한 링크를 추가했습니다: 교대로 문자열 병합

문제 설명

두 개의 문자열 word1과 word2가 제공됩니다. word1부터 시작하여 교대로 문자를 추가하여 문자열을 병합합니다. 문자열이 다른 문자열보다 긴 경우 병합된 문자열 끝에 추가 문자를 추가하세요.

병합 문자열을 반환합니다.

*예 1: *

입력: word1 = "abc", word2 = "pqr"
출력: "apbqcr"
설명: 병합된 문자열은 다음과 같이 병합됩니다.
단어1: a b c
단어2: p q r
병합: a p b q c r

예 2:

입력: word1 = "ab", word2 = "pqrs"
출력: "apbqrs"
설명: word2가 길수록 끝에 "rs"가 추가됩니다.
단어1: a b
단어2: p q r s
병합: a p b q r s

** 예 3:**

입력: word1 = "abcd", word2 = "pq"
출력: "apbqcd"
설명: word1이 길수록 끝에 "cd"가 추가됩니다.
단어1: a b c d
word2: p q
병합: a p b q c d

해결책

직관

두 개의 문자열이 주어지면 각 문자열의 문자를 번갈아 사용하여 병합해야 합니다. 두 문자열의 길이가 동일하지만 길이가 다를 수 있는 경우 해결책은 간단합니다. 포인터를 사용하여 두 문자열을 반복하면서 두 포인터가 끝에 도달할 때까지 결과에 문자를 추가합니다.

접근하다

  1. 두 문자열의 대체 문자를 저장하는 StringBuilder를 만듭니다.
  2. 각 문자열의 현재 위치를 추적하기 위해 두 개의 포인터를 만듭니다.
  3. 두 포인터가 해당 문자열의 끝에 도달할 때까지 두 문자열을 반복합니다.
  4. 문자열이 비어 있지 않으면 StringBuilder에 요소를 추가하고 포인터를 증가시킵니다
  5. StringBuilder 반환

복잡성

  • 시간 복잡도:
    시간 복잡도는 O(n)입니다. 여기서 n은 문자열을 반복할 때 더 긴 문자열의 길이입니다.

  • 공간 복잡성:
    StringBuilder와 몇 가지 변수를 사용하므로 시간 복잡도는 0(1)입니다.

암호

  public String mergeAlternately (String word1, String word2) {
    // ? Create a StringBuilder to build the result string efficiently
    StringBuilder completeWord = new StringBuilder();

    // ? Initialize two pointers to traverse both strings
    int p1 = 0;
    int p2 = 0;

    // ? Iterate through both strings until both pointers reach the end of their resépectives strings
    while (p1 < word1.length() || p2 < word2.length()) {
      // ? Append the current character from words if the pointer is within bounds
      if (p1 < word1.length()) completeWord.append(word1.charAt(p1));
      if (p2 < word2.length()) completeWord.append(word2.charAt(p2));
      p1++;
      p2++;
    }
    // ? Convert the StringBuilder to a string and return it
    return completeWord.toString();
  }
로그인 후 복사

위 내용은 문자열을 교대로 병합의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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