编写 Python 程序查找两个字符串的不常见字符2024 年 8 月 29 日 | 阅读 6 分钟 在本教程中,我们将编写 Python 程序来查找给定两个字符串的非公有字符。非公有字符是指存在于一个字符串但不在另一个字符串中,或存在于另一个字符串但不在第一个字符串中的字符。给定的字符串是小写字符,可以包含重复项。让我们通过以下示例来理解。 示例 - 为了解决这个问题,我们将采用以下方法。 方法 - 1:朴素方法在此方法中,我们将使用两个循环来检查第一个字符串中的字符是否存在于第二个字符串中,反之亦然。 注意 - 输出字符串必须按排序格式显示。让我们通过朴素方法的以下算法来理解。 算法
让我们通过下面的代码来理解。 示例 - 输出 Uncommon characters: dehrw 解释 - 在上面的代码中,我们初始化一个空的 uncommon_chars 列表来存储找到的非公有字符。然后,我们遍历 str1 中的每个字符,并检查它是否不存在于 str2 中,并且尚未存在于 uncommon_chars 中。如果两个条件都满足,则将该字符添加到 uncommon_chars。同样,我们遍历 str2 中的每个字符并执行相同的检查。 最后,我们返回 uncommon_chars 列表,其中包含存在于 str1 或 str2 中但不同时存在于两者中的所有唯一字符。 此方法的 time complexity 为 O(n2),因为我们使用了嵌套循环。对于较大的字符串,它可能效率不高。 我们可以优化上述解决方案。让我们来理解另一种方法。 方法 - 2:使用哈希在此方法中,我们将定义一个空字典并计算字符的频率。一旦我们获得每个字符的频率,我们就找到频率等于 1 的字符并将其添加到列表中。让我们通过以下示例来理解。 示例 - 输出 Uncommon characters: dehrw 解释 - 在上面的代码中,我们使用一个字典 char_freq 来存储 str1 和 str2 中字符的频率。我们遍历 str1 中的每个字符,并在 char_freq 中更新频率计数。然后,我们遍历 str2 中的每个字符并相应地更新频率计数。 计算频率后,我们创建一个空的 uncommon_chars 列表来存储非公有字符。我们遍历 char_freq 中的键值对,并检查频率是否为 1。如果是,则表示该字符是 str1 或 str2 特有的,然后我们将其添加到 uncommon_chars 中。 最后,我们返回 uncommon_chars,其中包含在两个字符串中找到的非公有字符。 上述代码的 time complexity 为 O(n),其中 n 是 str1 和 str2 中字符的总数。 方法 - 3:基于映射的技术让我们理解下面的例子。 示例 - 输出 ailnopruy 解释 - 在上面的代码中,我们定义了一个函数 uncommon_chars(),它接受两个字符串参数 a 和 b,并返回一个包含两个字符串之间非公有字符的字符串。 然后,我们初始化两个大小为 26 的数组 mp1 和 mp2。这些数组分别表示字符串 a 和 b 中字符的出现情况。数组最初填充有零。 第一个循环遍历字符串 a 中的每个字符 char,并通过将 mp1 中相应的元素设置为 1 来标记该字符的出现。映射基于字符的 ASCII 值,通过从其减去 'a' 的 ASCII 值来获取数组中的相应索引。 同样,第二个循环遍历字符串 b 中的每个字符 char,并通过将 mp2 中相应的元素设置为 1 来标记该字符的出现。初始化一个空字符串 chars 来存储找到的非公有字符。下一个循环遍历 26 的范围,代表 26 个英文字母。 在此循环中,条件 mp1[i] ^ mp2[i] 检查索引 i 处的字符在 mp1 和 mp2 之间的出现情况是否不同。如果条件为 true,则表示该字符存在于 a 中或存在于 b 中,但不是两者都存在。 如果条件满足,则使用 chr 函数和 ASCII 值计算将与索引 i 对应的字符追加到 chars 字符串。 循环结束后,代码会检查 chars 是否仍然是空字符串。如果是,则表示没有找到非公有字符,因此函数返回“-1”。否则,它返回包含非公有字符的 chars 字符串。 最后,使用字符串“capital”和“country”调用该函数,并打印返回的结果。 方法 - 4:使用集合在此方法中,我们将给定的字符串转换为集合,然后找到它们之间的对称差。让我们通过以下示例来理解。 示例 - 输出 bclpr bclpr 解释 - 上面的代码将字符串转换为集合,找到集合之间的对称差以获得非公有字符,然后对字符进行排序并连接它们以形成一个排序的非公有字符字符串。 |
什么是 SMOTE?合成少数过采样 (SMOTE) 过程增加了用于人工智能的信息数据集中较少引入的案例数量。这是一种通过复制现有案例来增加案例数量的更好方法。当我们需要处理...
5 分钟阅读
我们都听说过Python中的数据结构,以及它们如何在编程和开发工作中帮助我们。简单来说,我们可以说数据结构是一种在设备或系统中组织数据的特定方式,以便使用...
阅读 13 分钟
Python 是最流行的***别编程语言之一。Python 为人工智能(TensorFlow、PyTorch)、机器学习(Pandas、NumPy、Matplotlib)和游戏开发(Pyglet、PyGame)等不同领域提供了庞大的库。我们也可以将 Python 视为新一代编程语言,因为它展示了它的...
阅读 48 分钟
在之前的教程中,我们讨论了可以使用 Python 编程语言的不同包和模块对 PDF 文件执行的各种操作。我们学习了可用于操作 PDF 文件的不同 Python 库的工作原理。此外,我们...
阅读 8 分钟
在本文中,我们将讨论 Python 中的解析错误。这变得严重了。但不要害怕。我们知道“编码”这个词对于初学者和那些有点技术背景的人来说是多么令人生畏……但别担心。让你的 Python...
阅读 3 分钟
Paul Viola 和 Michael Jones 提出了,它被高效地用于对象检测。该算法基于机器学习方法,其中使用大量图像(正面或负面)来训练分类器。正面图像:正面图像是一种类型的图像...
阅读 4 分钟
在本教程中,我们将讨论 Python 中 choice() 方法的用法。要在程序中使用它,我们首先需要导入 random 模块。choice() 的功能是挑选或生成一个随机元素,它可以是任何东西,一个数字或一个...
阅读 3 分钟
Python 是脚本语言的定义,可以以多种方式使用。脚本语言 Python 使用许多解释器,每个解释器都不同。由于它将是 2023 年增长最快的编程语言,因此有大量的 Python 解释器可用......
阅读 12 分钟
我们可以通过多种方式对Python列表进行排序。有各种算法被设计用来对列表进行排序。对一维Python列表进行排序非常直接。它需要直接应用一种可用的算法。然而,给定一个嵌套的Python列表,基于什么...
阅读 6 分钟
列表是 Python 中一个至关重要的容器,因为它能够存储所有类型数据的元素作为集合。了解特定的列表操作对于日常编程至关重要。本文将讨论最基本的列表操作之一,...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India