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
78
79
80
81
82
83
84
85
86
|
/// 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() {
println!("{}", Solution::merge_alternately(arg(1), arg(2)))
}
#[cfg(test)]
mod tests {
use crate::Solution;
#[test]
fn test() {
assert_eq!(
Solution::merge_alternately("abc".to_string(), "pqr".to_string()),
"apbqcr".to_string()
);
assert_eq!(
Solution::merge_alternately("ab".to_string(), "pqrs".to_string()),
"apbqrs".to_string()
);
assert_eq!(
Solution::merge_alternately("abcd".to_string(), "pq".to_string()),
"apbqcd".to_string()
);
}
}
|