1768.交替合并字符串
题目
给你两个字符串 word1
和 word2
。请你从 word1
开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
返回 合并后的字符串 。
示例 1:
输入:word1 = "abc", word2 = "pqr" 输出:"apbqcr" 解释:字符串合并情况如下所示: word1: a b c word2: p q r 合并后: a p b q c r
示例 2:
输入:word1 = "ab", word2 = "pqrs" 输出:"apbqrs" 解释:注意,word2 比 word1 长,"rs" 需要追加到合并后字符串的末尾。 word1: a b word2: p q r s 合并后: a p b q r s
示例 3:
输入:word1 = "abcd", word2 = "pq" 输出:"apbqcd" 解释:注意,word1 比 word2 长,"cd" 需要追加到合并后字符串的末尾。 word1: a b c d word2: p q 合并后: a p b q c d
代码
class Solution {
public:
string mergeAlternately(string word1, string word2) {
char* p1 = &word1[0];
char* p2 = &word2[0];
int len1 = word1.length();
int len2 = word2.length();
string word_result;
for (int i = 1; i <= len1; i++) {
word_result.push_back(*p1);
p1 = &word1[i];
for (int j = i; j <= i && j <= len2; j++) {
word_result.push_back(*p2);
p2 = &word2[j];
}
}
if (len2 > len1) {
for (int j = len1 + 1; j <= len2; j++) {
word_result.push_back(*p2);
p2 = &word2[j];
}
}
return word_result;
}
};
总结
注意括号及缩进格式。
for循环的格式及使用,主体语句执行完后才执行++。本题中嵌套循环,注意j是和i同步累加的,因此初始j不是1而是i。
cout是给开发人员自己看的,模块之间的数据交互需要返回值。平台的硬性要求返回值是string,可以创建一个空字符串,把每次要打印的内容添加到字符串里面。