LeetCode刷题笔记
数组/字符串
交替合并字符串
-
题目:
给你两个字符串
word1
和word2
。请你从word1
开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回 合并后的字符串 。
-
题解:
-
C:
可以利用双指针交替移动获取字符然后存入到结果字符串中,注意结束条件,当其中一个指针到达字符串尾端时,直接将另一字符串的剩余部分加入到结果串中。
char * mergeAlternately(char * word1, char * word2){ // 直接调用strlen函数获取字符串长度 int len=strlen(word1)+strlen(word2); // 申请空间,预留结束符的空间 char *ans=malloc(len+1); char *p1 = word1; char *p2 = word2; int i=0; while(i<len) { ans[i]=*(p1++); i++; // 注意:字符串的结束符是'\0' 而不是"\0" if(*p1=='\0') // p1到达串1尾端,直接将串2剩余部分加到结果串,结束循环 { strcpy(ans+i,p2); break; } ans[i]=*(p2++); i++; if(*p2=='\0') { strcpy(ans+i,p1); break; } } ans[len]='\0'; // 添加结束符,防止越界 return ans; }
-
C++:
可以利用C++的库函数尾插
push_back()
。class Solution { public: string mergeAlternately(string word1, string word2) { int m = word1.size(); int n = word2.size(); string res; res.reserve(m+n); int i=0,j=0; while(i<m||j<n) // 只要有一个字符串没有到达尾端就继续循环 { if(i<m) res.push_back(word1[i++
-