T1768:. - 力扣(LeetCode)
刷题时间:20240324
方法一:双指针法:
C语言题解:
char * mergeAlternately(char * word1, char * word2)
{
char* mChar = (char*) malloc(strlen(word1) + strlen(word2) + 1);
int i = 0, j = 0, k =0;
for(;i < strlen(word1) && j < strlen(word2);)
{
mChar[k++] = word1[i++];
mChar[k++] = word2[j++];
}
if (strlen(word1) > strlen(word2))
{
for(;i < strlen(word1); i++)
{
mChar[k++] = word1[i];
}
}
else if(strlen(word1) < strlen(word2))
{
for(;j < strlen(word2); j++)
{
mChar[k++] = word2[j];
}
}
mChar[k] = '\0';
return mChar;
}
C语言题解方法二:
char * mergeAlternately(char * word1, char * word2){
char *ans = (char *)calloc(1, strlen(word1) + strlen(word2) + 1), *p = ans;
while (*word1 && *word2)
{
*p ++ = *word1 ++;
*p ++ = *word2 ++;
}
while (*word1) *p ++ = *word1 ++;
while (*word2) *p ++ = *word2 ++;
return ans;
}
C++题解:
class Solution {
public:
string mergeAlternately(string word1, string word2) {
string retString;
retString.reserve(word1.length() + word2.size());
int i = 0, j = 0;
while(i < word1.length() || j < word2.size()) {
if (i < word1.size()) {
retString.push_back(word1[i++]);
}
if (j < word2.length()) {
retString.push_back(word2[j++]);
}
}
return retString;
}
};
java题解:
class Solution {
public String mergeAlternately(String word1, String word2) {
int m = word1.length();
int n = word2.length();
int i = 0, j = 0;
StringBuilder ans = new StringBuilder();
while(i < m || j < n) {
if (i < m) {
ans.append(word1.charAt(i++));
}
if (j < n) {
ans.append(word2.charAt(j++));
}
}
return ans.toString();
}
}
方法二:单指针法:
class Solu