Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
Sichere ProgrammierungBreeze TTS 2 vs ElevenLabs: Open Source TTS Verdict(23.09.2026 um 05:44 Uhr)
Sichere ProgrammierungAgentic AI vs Generative AI: The 2026 Verdict(23.09.2026 um 05:44 Uhr)
Sichere ProgrammierungI made my agent prove every quote against the source document(23.09.2026 um 05:45 Uhr)
Sichere Programmierung8mb.video Alternative: Skip the Line, Skip the Upsell(23.09.2026 um 05:47 Uhr)
Sichere ProgrammierungBuilding a GTA 6 JSON API for entities and current status(23.09.2026 um 05:52 Uhr)
Sichere ProgrammierungEvery filter needs a documented exception(23.09.2026 um 06:01 Uhr)
Sichere ProgrammierungBreeze TTS 2 vs ElevenLabs: Open Source TTS Verdict(23.09.2026 um 05:44 Uhr)
Sichere ProgrammierungAgentic AI vs Generative AI: The 2026 Verdict(23.09.2026 um 05:44 Uhr)
Sichere ProgrammierungI made my agent prove every quote against the source document(23.09.2026 um 05:45 Uhr)
Sichere Programmierung8mb.video Alternative: Skip the Line, Skip the Upsell(23.09.2026 um 05:47 Uhr)
Sichere ProgrammierungBuilding a GTA 6 JSON API for entities and current status(23.09.2026 um 05:52 Uhr)
Sichere ProgrammierungEvery filter needs a documented exception(23.09.2026 um 06:01 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

Простая задача с собеседования в Google: Merge Strings Alternately

Задача. Даны две строки. Необходимо смержить эти строки в одну. При этом символы в результирующей строке должны чередоваться: один символ из первой строки, затем один символ из второй строки, и так далее. Если строки разной длины, то оста…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!




Задача.



Даны две строки. Необходимо смержить эти строки в одну. При этом символы в результирующей строке должны чередоваться: один символ из первой строки, затем один символ из второй строки, и так далее. Если строки разной длины, то оставшиеся символы из более длинной строки должны быть добавлены в конец результирующей строки.



Примеры:



Для строк "abc" и "pqk" результирующая строка будет "apbqck".

Для строк "abc" и "p" результирующая строка будет "apbc".



Ссылка на leetcode: https://leetcode.com/problems/merge-strings-alternately





Решение



Когда в условии задачи фигурируют две строки, два массива, два списка, то наиболее вероятным решением будет применения Two Pointers. Тем более если в условии задачи есть слово "смержить".

Еще одним соображением может быть применение части из алгоритма сортировки Merge Sort. Смотри тут список алгоритмов, которые нужно знать наизусть для собеседования по алгоритмам: Шпаргалка по основным алгоритмам для алгоритмического собеседования.

Можно подумать как адаптировать метод merge из алгоритма Merge Sort:




private static void merge(int[] arr, int left, int mid, int right, int buffer[]) {
int i = left;
int j = mid + 1;
int k = 0;
while (i <= mid && j <= right) {
if (arr[i] > arr[j]) {
buffer[k++] = arr[j++];
} else {
buffer[k++] = arr[i++];
}
}
while (i <= mid) {
buffer[k++] = arr[i++];
}
while (j <= right) {
buffer[k++] = arr[j++];
}
k = 0;
for (i = left; i <= right; i++) {
arr[i] = buffer[k++];
}
}






Этот метод также использует подход Two Pointers.



Как мы можем адаптировать этот метод для нашей задачи?



Мы можем инициализировать два указателя: первый будет указывать на начало первой строки, а второй — на начало второй строки. Затем будем поочередно копировать символы: сначала из первой строки, увеличивая первый индекс, затем из второй строки, увеличивая второй индекс. Как только мы достигнем конца одной из строк, результирующую строку дополним оставшимися символами из более длинной строки.



Давайте реализуем этот подход в коде:




    public String mergeAlternately(String word1, String word2) {
StringBuilder sb = new StringBuilder();
//Инициализируем два указателя
int i = 0;
int j = 0;
while (i < word1.length() && j < word2.length()) {
//Копируем символ из первой строки и увеличиваем первый индекс
sb.append(word1.charAt(i++));
//Копируем символ из второй строки и увеличиваем второй индекс
sb.append(word2.charAt(j++));
}
//Копируем оставшився хвост из большей строки, если он есть
while (i < word1.length()) {
sb.append(word1.charAt(i++));
}
while (j < word2.length()) {
sb.append(word2.charAt(j++));
}
return sb.toString();
}






Временная сложность: O(N+M), где N - длинна первой строки, M - длинная второй строки.

Сложность по памяти: O(1), если не считать память на результирующую строку. Если считать, то O(N+M).





Можно ли улучшить данное решение?



В любом случае нам придется итерироваться по всем элементам обеих строк. Поэтому улучшить временную сложность или сложность по памяти не удастся.

Но можно немного укоротить код решения. Можно заметить, что оба указателя одновременно пробегают одни и теже значения одновременно. Поэтому можно обойтись одним указателем, вместо двух.

Более того, можно объеденить все три цикла в один с дополнительной проверкой, что мы не достигли конца строки, перед копированием символа.



Код решения:




    public String mergeAlternately(String word1, String word2) {
StringBuilder sb = new StringBuilder();
//Инициализируем один индекс для итерации по двум строкам
int i = 0;
//Заменяем условие в цикле с and на or, чтобы объединить все три цикла в один
while (i < word1.length() || i < word2.length()) {
if (i < word1.length()) {
sb.append(word1.charAt(i));
}
if (i < word2.length()) {
sb.append(word2.charAt(i));
}
i++;
}
return sb.toString();
}






Временная сложность: O(N+M), где N - длинна первой строки, M - длинная второй строки.

Сложность по памяти: O(1), если не считать память на результирующую строку. Если считать, то O(N+M).



Давайте посмотрим, как это будет работать шаг за шагом на примере двух строк: "abc" и "pq".



Инициализируем i = 0:



Image description



i меньше длинны обеих строк, потому копируем первый символ из первой строки и первый символ из второй строки, и увеличиваем i на единицу:



Image description



i меньше длинны обеих строк, потому копируем вторые символы из первой и второй строк и увеличиваем i на единицу:



Image description



Теперь i меньше длинны первой строки, поэтому копируем третий символ из первой строки. Но i равно длинне второй строки, поэтому не ничего не делаем со второй строкой:



Image description



После этого i = 3, что больше или равно длинны обоих строк. Поэтому на этом работа алгоритма завершается.

Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Простая задача с собеседования в Google: Merge Strings Alternately

Thematisch verwandte Begriffe: Простая, задача, собеседования, Google · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-18163 | IBM Financial Transaction Manager (FTM) for RedHat OpenShift could allow…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick