| 给你两个字符串 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分配的内存没有初始化,多出来的字母追加到合并后字符串的末尾的时候,就会导致内存溢出而出错 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义