leetcode刷题记录(C语言)

给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。
如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
返回 合并后的字符串 。
输入:word1 = "abc", word2 = "pqr"
输出:"apbqcr"
解释:字符串合并情况如下所示:
word1: a b c
word2: p q r
合并后: a p b q c r
char * mergeAlternately(char * word1, char * word2){
int len1=strlen(word1),len2=strlen(word2),i=0,j=0;
char *word=(char *)malloc(sizeof(char)*(len1+len2+1));
while(i<len1||i<len2){
i<len1?(word[j++]=word1[i]):0;
i<len2?(word[j++]=word2[i]):0;
i++;
}
word[j]='\0';
return word;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * mergeAlternately(char * word1, char * word2){
int chlen1 = strlen(word1);
int chlen2 = strlen(word2);
int temp = 0, flag1 = 0, flag2 = 0;
char *word = (char*)calloc((chlen1 + chlen2 + 1), sizeof(char));
while ((flag1 < chlen1) && (flag2 < chlen2)) {
word[temp++] = word1[flag1++];
word[temp++] = word2[flag2++];
}
while (flag1 < chlen1) {
word[temp++] = word1[flag1++];
}
while (flag2 < chlen2) {
word[temp++] = word2[flag2++];
}
word[chlen1 + chlen2] = '\0';
return word;
}
如果使用malloc动态分配内存,使用strcat(word1, word2),因为malloc分配的内存没有初始化,多出来的字母追加到合并后字符串的末尾的时候,就会导致内存溢出而出错
posted @   稻草人拾荒  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示