字符串中的第一个唯一字符 Python2024 年 8 月 29 日 | 阅读 6 分钟 本教程将展示查找给定字符串的第一个唯一字符的各种方法。例如,如果给定字符串是“stringstutorial”,则结果应为“n”,如果给定字符串是“StringsTutorial”,则结果应为“S”。 说明输入:“stringstutorial” 说明 步骤 1:为给定字符串创建字符频率列表 freq['s'] = 2 freq['t'] = 3 freq['r'] = 2 freq['i'] = 2 freq['n'] = 1 freq['g'] = 1 freq['u'] = 1 freq['o'] = 1 freq['a'] = 1 freq['l'] = 1 步骤 2:查找频率为单位的第一个字符。 创建频率哈希图如果一个字符在给定字符串中只出现一次,则认为它是非重复字符。定位此类唯一字符的步骤是计算字符串序列中每个字母的频率,并确定哪个字母的频率为 1。哈希图是一种有效的工具,它可以将字符映射到其对应的频率,使我们能够以恒定的时间同时修改我们已经遇到的字符的频率。在 ASCII 系统中,256 个唯一字符是限制。因此,哈希图的最大长度为 256。重新读取字符串,频率等于一的第一个字母就是答案。 算法
代码 输出 The first unique character is n 仅遍历一次字符串查找唯一字符主要方法需要 O(n) 的运行时间,尽管我们可以在应用程序中使其更快。计数数组在过程的第一步中通过 O(n) 的运行时间迭代遍历文本来构建。这一步是合理的。但是,第二部分,即我们重放字符串的第一个非重复项,并不是一个好主意。 在实际情况下,字符串通常比我们的字符集长得多。考虑 DNA 序列,它们可能有数十亿个字母,但只有一个四字母字母表。如果唯一字符位于字符串的末尾,会发生什么?然后,它将需要很长的扫描。 创建哈希图并仅遍历字符串一次不要使用哈希图,而是创建一个长度为 256 的频率数组,该长度等于字符列表的长度。通过向频率数组添加信息,我们可以存储不仅频率,还可以存储字母首次出现的位置,例如字母的 (5, 36),表示它被记录了五次,最初出现在位置 36。为了找到第一个唯一字符,我们只需要扫描频率数组而不是字符串。下面是这个想法的实现。 代码 输出 First unique character is n 创建频率列表并仅循环一次创建最多 256 个字符的频率列表。我们可以将此列表中的所有项初始化为 -1。我们将迭代字符串中的字符,并检查此特定字符的列表元素是否索引为 1。如果结果为 -1,我们将将其更改为 j;如果结果不是 -1,则表示该字符已被使用;在这种情况下,我们将将其更改为 -2。 所有重复的字符最终都将被更改为 -2,而所有唯一的字符仍将保留它们首次出现的索引。通过迭代所有唯一的字符,我们可以快速找到最小或初始索引。 代码 输出 The first unique character is n 使用 Python 的内置函数利用 Counter() 函数确定所有字符的频率。 遍历字符串并查找频率为 1 的元素。打印唯一字符并在此处中断循环。 代码 输出 The first unique character is: n 使用字符串的 find() 函数在当前字母之后,查找每个后续字母。如果返回 -1,则表示该字母只出现一次,即当前索引。 代码 输出 The first unique character is: n 使用 count() 函数如果一个字符在字符串中的 count() 为 1,则表示该字符是唯一的且未重复。我们将中断循环并打印找到的第一个唯一字符。 代码 输出 The first unique character is n |
本教程将学习RSME(均方根误差)及其在Python中的实现。让我们从它的简要介绍开始。简介 RSME(均方根误差)计算模型预测值与实际值之间的变换。换句话说,它是这样一种...
阅读 3 分钟
装饰器是 Python 中一个重要且有用的工具。它允许我们修改函数或类的行为。到目前为止,我们已经学习了如何使用函数创建装饰器,但在这里我们将讨论如何将类定义为装饰器。在...
阅读 4 分钟
Python 具有特定的内置函数,因此它支持在多个顺序容器中使用多种循环技术。这些循环函数和方法对于竞争性编程非常有用。它可以在用户必须使用一些特定循环技术的不同项目中使用...
阅读 3 分钟
在下面的教程中,我们将通过一些示例讨论 Python 编程语言的 tracemalloc 模块。Tracemalloc 是从 Python 3.4 版本开始可用的一个模块,它允许我们监控 Python 代码中的内存分配。它允许我们拍摄内存快照...
阅读 15 分钟
二叉搜索树是更通用的二叉树的后代,带有一些约束。在二叉搜索树中,节点的排列应遵循某些属性。这些属性是:树的所有父节点的值应大于子节点...
阅读 13 分钟
如何使用 Python 写入文本文件?读写文件以用于存储或以后使用是编程中的常见任务。Python 有多种处理文件的方法,但我们将特别关注写入文本文件。文本文件是...
阅读 6 分钟
在本教程中,我们将讨论提供一种简单直观的方法来转换图像并理解其背后数据的 Python 库。今天的世界充斥着数据,而图像是这些数据的主要部分。但是为了被利用……
5 分钟阅读
网络爬虫是一种抓取网页并从中提取详细信息的过程。与为一个项目定期从网页复制和粘贴信息相比,网络爬虫可以有效地解决这个问题。但是,可用于网络爬虫的网站很少。有一些...
阅读 3 分钟
简介:在本文中,我们将讨论 Python 中的类型转换。它将 Py-type 数据转换为另一种形式的数据。它是一种转换技术。隐式类型转换和显式类型转换是 Python 类型转换过程的两个基本类别。Python 具有类型转换例程,可以...
阅读 6 分钟
银行业和金融业产生了海量与客户交易、账单和付款相关的数据,这些数据可以提供准确的见解和预测,供 AI 模型处理。海量的交易数据帮助了金融行业……
14 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India