-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1768.go
77 lines (69 loc) · 1.93 KB
/
1768.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Source: https://leetcode.com/problems/merge-strings-alternately
// Title: Merge Strings Alternately
// Difficulty: Easy
// Author: Mu Yang <http://muyang.pro>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// You are given two strings word1 and word2. Merge the strings by adding letters in alternating order, starting with word1. If a string is longer than the other, append the additional letters onto the end of the merged string.
//
// Return the merged string.
//
// Example 1:
//
// Input: word1 = "abc", word2 = "pqr"
// Output: "apbqcr"
// Explanation: The merged string will be merged as so:
// word1: a b c
// word2: p q r
// merged: a p b q c r
//
// Example 2:
//
// Input: word1 = "ab", word2 = "pqrs"
// Output: "apbqrs"
// Explanation: Notice that as word2 is longer, "rs" is appended to the end.
// word1: a b
// word2: p q r s
// merged: a p b q r s
//
// Example 3:
//
// Input: word1 = "abcd", word2 = "pq"
// Output: "apbqcd"
// Explanation: Notice that as word1 is longer, "cd" is appended to the end.
// word1: a b c d
// word2: p q
// merged: a p b q c d
//
// Constraints:
//
// 1 <= word1.length, word2.length <= 100
// word1 and word2 consist of lowercase English letters.
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package main
import (
"strings"
)
func mergeAlternately(word1 string, word2 string) string {
sb := strings.Builder{}
l1 := len(word1)
l2 := len(word2)
l := _min(l1, l2)
for i := 0; i < l; i++ {
sb.WriteByte(word1[i])
sb.WriteByte(word2[i])
}
for i := l; i < l1; i++ {
sb.WriteByte(word1[i])
}
for i := l; i < l2; i++ {
sb.WriteByte(word2[i])
}
return sb.String()
}
func _min(a, b int) int {
if a < b {
return a
}
return b
}