当前位置: 首页 > news >正文

编程基础 0 到 1 1768. 交替合并字符串

给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。

返回 合并后的字符串 。

class Solution(object):
    def mergeAlternately(self, word1, word2):
        i=0
        j=0
        str=[]
        while i< len(word1) and j<len(word2):
            str.append(word1[i])
            str.append(word2[j])
            i+=1
            j+=1
        while i< len(word1) :
            str.append(word1[i])
            i+=1
        while  j<len(word2):
            str.append(word2[j])
            j+=1
        return ''.join(str)

要从 word1 和 word2 开始,通过交替添加字母来合并字符串,并将多余的字母追加到合并后的字符串末尾,可以使用两个指针来遍历这两个字符串

上述while循环似乎有些繁琐,我们也可以使用for循环:

class Solution(object):
    def mergeAlternately(self, word1, word2):
        i=0
        str=[]
        maxlen=max(len(word1),len(word2))
        for i in range(maxlen):
            if i < len(word1):
                str.append(word1[i])
            if i < len(word2):
                str.append(word2[i])

        return ''.join(str)

使用效果是一样的。接下来说一下我写代码中遇到的一些问题:

1.尝试同时声明多个变量时使用了不正确的语法

刚开始我的i,j声明时使用的是i=0,j=0,但是报错了。我以为是没有声明类型,所以报错,但是加了int也不行,后来发现是在 Python 中,不能像在 C 或 Java 等语言中那样,在同一行中用逗号分隔来同时声明多个变量类型。每个变量应该单独声明,并且 Python 是动态类型语言,通常不需要在声明时指定变量类型。改成i,j=0,0也可以成功运行

2.连接字符串输出

在Python中,join()方法是字符串对象的一个方法,它用于将序列(如列表、元组等)中的元素连接成一个新的字符串。join()方法是处理字符串列表或字符串集合时非常有用的工具,特别是当你需要将它们合并成一个单一的、格式化的字符串时。它通常比使用循环和字符串连接运算符(+)来逐个连接字符串更高效,因为join()方法是在内部优化的,可以一次性完成所有的连接操作。

如果使用+:

执行用时一下就上升了很多。 

389.找不同

我先开始想直接把他们相减,但是没成功,说字符串减不了,于是改成了集合。但是用集合只能适用于加的字符和之前字符都不相同的情况

也可以用异或 

class Solution(object):
    def findTheDifference(self, s, t):
        result = 0
        for char in s:
            result ^= ord(char)
        for char in t:
            result ^= ord(char)
        return chr(result)

 

 刚开始我想只要在s中的字符,就剔除,但是存在字符重复的情况,可能造成返回值为null的情况:

后来我加入了计数器,希望跳过重复出现的情况,但是也出现了问题:

我想是因为打乱顺序,且a1 是基于 t 创建的集合,而 t 包含重复字符时,集合会丢失重复信息,这可能导致逻辑错误。而且for j in a1: return j 的逻辑不正确,因为 a1 在循环中被修改,可能导致无法正确返回结果。

这里我们还可以使用ASCLL码来进行运算,我认为这种想法很巧妙,且相当简洁:

class Solution(object):
    def findTheDifference(self, s, t):
        # 利用字符的 ASCII 值求和,t 的总和减去 s 的总和即为多出的字符
        return chr(sum(ord(c) for c in t) - sum(ord(c) for c in s))

相关文章:

  • 蓝桥杯 日期统计(刷题笔记)
  • C++多线程编码二
  • 软件学报 2024年 区块链论文 录用汇总 附pdf下载
  • httpx模块的使用
  • Java中的同步和异步
  • 语法: result=ldexp (value, exp);
  • PHP 安全 E-mail
  • MatterGen-加速材料发现
  • 现代Web应用中的时光机器:深入解析撤销/重做功能的艺术与科学
  • Mac OS 禁用 SIP 系统完整性保护
  • Java学习总结-多线程-三种创建方法
  • Qt 音乐播放器项目
  • C语言:转置矩阵
  • vue封装一个toast(vue-toastification)弹窗在拦截器js中调用
  • python | numpy小记(三):理解 NumPy 中的 `np.ceil`:向上取整的利器
  • Axure RP9.0教程 | 内联框架 对应html 元素中的iframe标签 (打开内部页面和外部网址)
  • 虚幻基础:蓝图基础知识
  • 基于Python的招聘推荐数据可视化分析系统
  • 金庸群侠传3D-启动
  • vscode使用方式
  • 网络网站建设推广/国外外链平台
  • 怎么找响应式网站/百度网页pc版登录
  • 云南旅游网站建设/网赌怎么推广拉客户
  • 网站建设明细报价单/福建百度代理公司
  • 江苏网站seo优化/什么是核心关键词
  • 大美工设计网站官网/网站和网页的区别