코더 여러분! 당신이 잘 지내기를 바랍니다. 코딩 인터뷰를 준비하는 데 도움이 되는 75가지 필수 문제를 다루는 LeetCode-75 시리즈의 솔루션을 공유하게 되어 기쁩니다.
각 게시물에서는 내 접근 방식에 대한 자세한 설명과 함께 솔루션을 제시하겠습니다. 질문이나 개선을 위한 제안 사항을 댓글로 남겨주세요. 나는 당신과 협력하고 논의하기를 기대하고 있습니다! 즐거운 코딩하세요!
여기에 문제에 대한 링크를 추가했습니다: 교대로 문자열 병합
두 개의 문자열 word1과 word2가 제공됩니다. word1부터 시작하여 교대로 문자를 추가하여 문자열을 병합합니다. 문자열이 다른 문자열보다 긴 경우 병합된 문자열 끝에 추가 문자를 추가하세요.
병합 문자열을 반환합니다.
입력: word1 = "abc", word2 = "pqr"
출력: "apbqcr"
설명: 병합된 문자열은 다음과 같이 병합됩니다.
단어1: a b c
단어2: p q r
병합: a p b q c r
입력: word1 = "ab", word2 = "pqrs"
출력: "apbqrs"
설명: word2가 길수록 끝에 "rs"가 추가됩니다.
단어1: a b
단어2: p q r s
병합: a p b q r s
입력: word1 = "abcd", word2 = "pq"
출력: "apbqcd"
설명: word1이 길수록 끝에 "cd"가 추가됩니다.
단어1: a b c d
word2: p q
병합: a p b q c d
두 개의 문자열이 주어지면 각 문자열의 문자를 번갈아 사용하여 병합해야 합니다. 두 문자열의 길이가 동일하지만 길이가 다를 수 있는 경우 해결책은 간단합니다. 포인터를 사용하여 두 문자열을 반복하면서 두 포인터가 끝에 도달할 때까지 결과에 문자를 추가합니다.
시간 복잡도:
시간 복잡도는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!