给你两个字符串 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
提示:
1 <= word1.length, word2.length <= 100
word1 和 word2 由小写英文字母组成
代码:
char* mergeAlternately(char* word1, char* word2) {
}
解答:
char* mergeAlternately(char* word1, char* word2) {
int len1 = strlen(word1); // 获取 word1 的长度
int len2 = strlen(word2); // 获取 word2 的长度
int totalLen = len1 + len2; // 合并后的总长度
// 动态分配内存,+1 是为了放字符串结束符 '\0'
char* result = (char*)malloc((totalLen + 1) * sizeof(char));
if (!result) return NULL; // 判断是否分配成功,失败返回 NULL
int i = 0, j = 0, k = 0; // i 表示 word1 的下标,j 表示 word2 的下标,k 表示 result 的下标
// 两个字符串都未结束时,交替添加字符
while (i < len1 && j < len2) {
result[k++] = word1[i++]; // 添加 word1 的字符,然后 i、k 自增
result[k++] = word2[j++]; // 添加 word2 的字符,然后 j、k 自增
}
// 如果 word1 还有剩余字符,继续添加
while (i < len1) {
result[k++] = word1[i++];
}
// 如果 word2 还有剩余字符,继续添加
while (j < len2) {
result[k++] = word2[j++];
}
result[k] = '\0'; // 添加字符串结尾标志
return result; // 返回合并后的字符串
}
462

被折叠的 条评论
为什么被折叠?



