给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例
说明
您可以假定该字符串只包含小写字母。
注意事项
思路一
因为题目要求是小写的英文字母,一共就26个,ASCII码从97到122。所以可以设置一个长度为26的数组,里面存储着对应字母在字符串中的索引,遇过重复了就将值改为-1,最后除-1外找到最小的值。
修改经历:
1. 忘记考虑没有不重复的情况了。(第一次提交)
2. 修改后提交,提交成功。(第二次提交)
心得体会:
最终代码展示:
思路二
利用 Python 中的 Collections 包中的 Counter 来实现自动统计元素重复次数。把第一个重复次数为1的元素,index输出就行。柑橘有点作弊,哈哈哈。
修改经历:
1.一次成功。(第一次提交)
心得体会:
这也不快啊。。。不过真得很简单。
最终代码展示:
思路三
这个是从大神那里看到的,因为字母就26个,所以采用 String 的特有方法, find() 和 rfind() ,一个从左向右查,一个从右往左查,两个相等时就是不重复的元素了。比较那个不重复的元素index小,就行了。虽然要遍历26遍,但也是O(N)的复杂度。
修改经历:
1. 一次成功。(第一次提交)
心得体会:
自带的算法优化得很好了,find 和 rfind 相当于两个指针了。
最终代码展示:
思路四
用到了有序字典,这和一般的字典不一样。相比于一般的字典都是任意位置,有序字典会记录插入顺序。这也就是说只要两个字典的元素相同就可以,而有序字典的顺序也必须相同。这个函数在 collections 包中的 OrderedDict() 函数。该函数可以想数组一样操作。
修改经历:
1. 一次成功。(第一次提交)
心得体会:
有序字典也慢啊。
最终代码展示:
思路五
题解大神的思路,字典加过滤器(filter)。这里介绍下 filter() 这个 Python 的内置函数。
修改经历:
1. 没有考虑到filter返回的list的形式,在这里的filter返回的list依然是字典的形式,所以只需要把key取出来就好。(第一次提交)
2. 提交成功。(第二次提交)
心得体会:
学会了filter,开心。
最终代码展示:
JavaScript 字符串用于存储和处理文本。JavaScript 字符串字符串可以存储一系列字符,如 "John Doe"。字符串可以是插入到引号中的任何字符。你可以使用单引号或双引号:实例var carname = "Volvo XC60";var carname = 'Volvo XC60';你可以使用索引位置来访问字符串中的每个字符:实例var character = carname[7
# 实现Java给定一个字符串str和一个字符串数组words,words中所有字符串长度相同作为一名经验丰富的开发者,我将教你如何实现这个任务。首先,我们需要定义问题的整体流程,然后详细说明每个步骤需要做什么以及使用哪些代码。## 流程表格| 步骤 | 描述 || ---- | ---- || 1 | 遍历字符串str,截取长度为words中字符串长度的子串 || 2 | 判断
# 实现 Java 字符串数组与字符串对比的步骤在 Java 中,我们常常需要比较一个字符串与一个字符串数组中的每个元素,查看这个字符串是否存在于数组中。本文将阐述如何实现这一功能,并详细介绍每一步的实现。## 整体流程在我们开始编写代码之前,首先了解一下整个流程,包括我们需要什么,如何实现它。下面的表格展示了实现的基本步骤。| 步骤 | 描述 || -------- | ---
//判断一个字符串是否是一个字符串的旋转字符串 //利用库函数实现 #include #include #include int IsRotate(char *st
# Python 字符串截取## 流程概览为了实现将一个字符串从另一个字符串中截取出来,我们需要进行以下步骤:| 步骤 | 描述 || --- | --- || 1 | 确定原始字符串和目标字符串 || 2 | 确定截取的起始位置和结束位置 || 3 | 使用切片操作截取字符串 || 4 | 输出截取后的结果 |下面我们将逐步进行详细解释每个步骤,并提供相应的代码示例。
实现“一个字符串包含另一个字符串mysql”可以通过使用数据库查询语言(SQL)中的LIKE操作符来实现。在本文中,我将向你展示整个实现过程,并提供每个步骤所需的代码示例。## 实现流程以下是实现“一个字符串包含另一个字符串mysql”的流程图:```mermaiderDiagram Developer --> Newbie: 教学 Newbie --> LIKE: 使
iOS 中字符串长度的计算是一个简单而常见的任务,但在真实开发中却可能因为编码、字符集等各种因素而变得复杂。在这篇博文中,我将分享我们如何在 iOS 中有效地处理字符串长度计算的问题,并将整个过程结构化,以便更好地理解和应用。## 环境准备在开始之前,请确保您已经安装了以下开发环境。本文适用于 iOS 的开发环境,包括 Xcode 和 Swift。我们需要保证系统具有正确的工具链,以支持我
# Java字符串处理:移除子字符串的实例在Java编程中,字符串的处理是一个常见且重要的任务。无论是在数据处理、用户输入验证,还是在输出格式化中,字符串的操作总是不可或缺的。本文将通过一个具体的例子,讲解如何在Java中移除一个字符串中的指定子字符串,并附带相应的代码示例。## 字符串的基本操作Java中的字符串是不可变的(immutable),这意味着一旦创建,字符串的内容就不能被
# 如何实现“Java 给定一个字符串按照字符长度排序”作为一名经验丰富的开发者,我将向你介绍如何实现这个功能。首先,让我们来看一下整个流程,并给出详细的步骤和代码示例。## 整个流程下面是实现“Java 给定一个字符串按照字符长度排序”的步骤:| 步骤 | 描述 || ---- | ---- || 1 | 将字符串数组按照字符长度排序 || 2 | 输出排序后的字符串数组
# Python给定一个字符串输出第一个字符的实现步骤作为一名经验丰富的开发者,我将在下面的文章中向你介绍如何使用Python给定一个字符串并输出第一个字符。这篇文章将会包含以下内容:1. 问题背景和目标2. 解决方案的步骤和代码示例3. 代码说明和注释4. 总结和扩展思考## 1. 问题背景和目标首先,让我们明确问题的背景和目标。我们的目标是通过编写Python代码来实现以
C语言中没有字符串类型,也没有字符串变量,字符串是存放在字符型数组中的。1 。定义字符数组 用来存放字符数据的数组是字符数组。在字符数组中的一个元素内存放一个字符。 定义字符数组的方法与定义数值型数组的方法类似。例如: char c[10]; c[0]='I';c[1]='';[2]='a'; c[3]='m';c[4]='';c[5]='h';c[6]='a';e[7]='p';c[8]='p'
C++提供了一种新的数据类型——字符串类型(string类型),在使用上和char、int类型一样,可以用来定义变量,这就是字符串变量。实际上,string并不是C++本身具有的基本类型,它是C++标准库中声明的一共字符串类,用这种类可以定义对象。每一个字符串变量都是string类的一个对象。1.字符串变量的定义和引用(1)定义字符串变量和其他类型变量一样,字符串变量必须先定义后使用,定义字符串变
String可以说是Java中使用最多最频繁、最特殊的类,因为同时也是字面常量,而字面常量包括基本类型、String类型、空类型。一. String的使用1. String的不可变性String对象一旦在堆中创建出来,就无法再修改。因为String对象放在char数组中,该数组由final关键字修饰,不可变。2. 定义一个字符串/** * 定义一个字符串 */String str1 = "h
string字符串的创建可以通过String str1="hello"或者 String str2 = new String("hello")两种形式。 使用String str1="hello"这种方式创建字符串的时候,jvm首先会检查字符串常量池中是否存在该字符串的对象,如果已经存在,那么就不会在字符
字符串是Python标准类型之一,是由单引号或者双引号括起来的字符系列。字符串是常量,即改变字符串任何字符都需要重新创建新的字符串对象,在Python中有大小写之分。字符串的创建 创建一个字符串可以通过将一个字符串赋值给一个变量的方式来创建,也可以通过工厂函数str()来创建。 &
这五种技术,尽管叫法不同:数据库,搜索引擎,数据仓库。其实都是我们应用程序和数据之间的一个中间层。 要理解他们有什么不同,要从他们设计哲学和应用场景来看: MySQL - 关系型数据库 应用程序 → MySQL(关系型数据库) → 磁盘文件 mysql作为典型的传统关系型数据库,主要有以下特点: 提 ...
Shell 是指一种应用程序,用户通过这个程序访问操作系统内核的服务。 Windows Explorer,图形界面shell Ken Thompson 的 sh,第一种Unix Shell Bourne Again Shell(/bin/bash) Shell 脚本一般指能在sh或bash等Unix ...
为了解决不同网络之间的通信难题,人们在ARPANET的基础上,发明了以“分组交换”为基础、以“TCP/IP协议”为通用语言的互联网,其中IP负责精准投递,TCP负责可靠传输。