summaryrefslogtreecommitdiffstats
path: root/:w
blob: 7853574c1e62b1cebe7a299f70912bde7bca164a (plain) (blame)
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
/// 1768. Merge Strings Alternately (Easy)
///
/// 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.
///

use leetcode::*;

struct Solution {}

impl Solution {
    pub fn merge_alternately(word1: String, word2: String) -> String {
        let mut out = Vec::with_capacity(word1.len() + word2.len());
        let mut word1 = word1.chars().peekable();
        let mut word2 = word2.chars().peekable();
        while word1.peek().is_some() || word2.peek().is_some() {
            if let Some(c) = word1.next() {
                out.push(c);
            }
            if let Some(c) = word2.next() {
                out.push(c)
            }
        }
        out.into_iter().collect()
    }
}

pub fn main() {
}

#[cfg(test)]
mod tests {
    use crate::Solution;

    #[test]
    fn test() {
    }
}