首页 > 其他分享 >【LeetCode】1768_交替合并字符串_C

【LeetCode】1768_交替合并字符串_C

时间:2024-03-03 09:11:44浏览次数:23  
标签:++ res char int 1768 word1 word2 字符串 LeetCode

题目描述

给你两个字符串 word1word2 。请你从 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
  • word1word2 由小写英文字母组成

解题总结

实现方式1是我自己的写法,写完之后感觉有点冗余,但又不知如何改进,实现方式2则是借鉴了别人的题解,显然,方式2的代码更加简洁优雅

代码实现

  • 实现方式1
char * mergeAlternately(char * word1, char * word2){
    int length1 = strlen(word1);
    int length2 = strlen(word2);
    char* res = (char*)malloc(sizeof(char) * (length1 + length2 + 1));
    int i = 0;
    int j = 0;
    while(word1[i] != 0 && word2[i] != 0)
    {
        res[j] = word1[i];
        j++;
        res[j] = word2[i];
        i++;
        j++;
    }
    if(word1[i] == 0)
    {
        while(word2[i] != 0)
        {
            res[j] = word2[i];
            i++;
            j++;
        }
    }
    else
    {
        while(word1[i] != 0)
        {
            res[j] = word1[i];
            i++;
            j++;
        }
    }
    res[j] = 0;
    return res;
}
  • 实现方式2
char * mergeAlternately(char * word1, char * word2) {
    int length1 = strlen(word1);
    int length2 = strlen(word2);
    char* res = malloc(sizeof(char) * (length1 + length2 + 1));
    int i = 0;
    int j = 0;
    while (i < length1 || i < length2) 
    {
        if (i < strlen(word1)) 
        {
            res[j++] = word1[i];
        }
        if (i < strlen(word2)) 
        {
            res[j++] = word2[i];
        }
        i++;
    }
    res[j] = 0;
    return res;
}

标签:++,res,char,int,1768,word1,word2,字符串,LeetCode
From: https://www.cnblogs.com/changbaiqiusha/p/18049598

相关文章

  • 【LeetCode】383_赎金信_C
    题目描述给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ransomNote中使用一次。示例示例1:输入:ransomNote="a",magazine="b"输出:false示例2:输入:ran......
  • 字符串前面的u,r,b,f的意义
    ###字符串前面加上4个字母u,r,b,f的含义#加u后面字符串以Unicode格式进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。#加r去掉反斜杠的转移机制。#加bb""前缀表示:后面字符串是bytes类型。#加f以f开头表示在......
  • day 05-2 数据类型(字符串)
    3.字符串字符串,我们平时会用他来表示文本信息。例如:姓名、地址、自我介绍等。3.1定义v1="包治百病"v2='包治百病'v3='"包"治百病'v4="包'治百病'"V5="""吵架都是我的错,因为大家打不过。"""#三个引号,可以支持多行/换行表示一个字符串,其他的都只能在一行中表......
  • 代码随想录算法训练营day11 | leetcode 20. 有效的括号、1047. 删除字符串中的所有相
    目录题目链接:20.有效的括号-简单题目链接:1047.删除字符串中的所有相邻重复项-简单题目链接:150.逆波兰表达式求值-中等题目链接:20.有效的括号-简单题目描述:给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右......
  • Delphi和C的类比:指针、字符串、函数指针、内存分配等
    在学习Delphi的时候,一个很好的建议是和C/C++去类比着学习,从指针,到内存管理,到数组,到面向对象……各个方面,都是有很多可以相似和或者也有不同的方,类比着学习,一方面加深对Delphi的理解,一方面加深对C/C++的理解,一方面加深对计算机系统的理解,一方面加深对面向对象的理解……由1向多可以......
  • 代码随想录 第九天 | 烤馍片(kmp)算法 ●28. 实现 strStr() ●459.重复的子字符串
    烤馍片算法(kmp):为了不让遍历的指针回退,每次不相等的时候找不相等之前的字符串的最长相等前后缀。i表示目标字符串,j表示需要在目标找到的字符串的指针。最长相等前后缀的长度就是之前有多少个与needle字符串相同,直接将j跳到上一元素位置记录的最长相等前后缀长度(next数组),这样i就可以......
  • 【LeetCode】876_链表的中间结点_C
    题目描述给你单链表的头结点head,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。https://leetcode.cn/problems/middle-of-the-linked-list/description/示例提示:链表的结点数范围是[1,100]1<=Node.val<=100解题思路思路一遍历链......
  • 代码随想录算法训练营day10 | leetcode 232. 用栈实现队列、225. 用队列实现栈
    目录题目链接:232.用栈实现队列-简单题目链接:225.用队列实现栈-简单题目链接:232.用栈实现队列-简单题目描述:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intp......
  • $\text{20240301}$ 字符串练习题解
    \(\text{20240301}\)字符串练习题解一定要写冬令营的题吗?遗憾的。P9717给了一个\(n\)个数的首尾相接的字符串,求若干个操作后能形成的不同的字符串大小。一次操作定义为:将字符串内所有的\(\text{01}\)同时改成\(\text{10}\),如图。通过这张图我们似乎发现了一个规律,这......
  • 第六章 字符串
    第6章字符串一、字符编码格式最早字符串编码:ASCIIGB2312-1980:中国定制的中文编码,1个字节兼容ASCII,2个字节表示中文GBK:是GB2312-1980的扩充CP936:是微软在GBK上扩充UTF8:1个字节兼容ASCII,3个字节表示汉字二、转义字符与原始字符串转义字符含义转义字符含义\b退......