写在前面

题目

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。

 示例 1:
 ​
 输入: s = "leetcode"
 输出: 0
 示例 2:
 ​
 输入: s = "loveleetcode"
 输出: 2
 示例 3:
 ​
 输入: s = "aabb"
 输出: -1
 ​
 提示:
 ​
 1 <= s.length <= 105
 s 只包含小写字母
 ​
 来源:力扣(LeetCode)
 链接:https://leetcode.cn/problems/first-unique-character-in-a-string
 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路1:

 class Solution:
     def firstUniqChar(self, s: str) -> int:
         for index,_ in enumerate(s): #遍历字符串获取索引
             if s.count(_)==1: #如果计数为1
                 return index #则返回
         else:
             return -1  #没找到计数为1的,就返回-1
  • 方法1的解决效果,写的时候就能想到,耗时比较慢,因为每次获取到一个字符都要从头去遍历一遍。

思路2:hash表

  • count的问题可以通过hash表来规避

  • 得到一个字符的时候设置其次数为1,第二次遇到就+1,依次类推,最终去找value为1的,没有就返回-1

 class Solution:
     def firstUniqChar(self, s: str) -> int:
         hash_s = {}
         for _ in s:
             hash_s[_] = hash_s[_]+1 if _ in hash_s else 1
         for k,v in hash_s.items():
             if v==1:
                 return s.index(k)
         else:
             return -1

思路3:

  • 其实hash表那部分代码就是python的一些标准库

     s = 'hello'
     from collections import Counter
     counter = Counter(s)
     print(dict(counter))  #{'h': 1, 'e': 1, 'l': 2, 'o': 1}  
  • 修改上述代码

     class Solution:
         def firstUniqChar(self, s: str) -> int:
             from collections import Counter
             hash_s = dict(Counter(s))
             for k,v in hash_s.items():
                 if v==1:
                     return s.index(k)
             else:
                 return -1
  •  

LeetCode_387. 字符串中的第一个唯一字符的更多相关文章

  1. Leecode刷题之旅-C语言/python-387 字符串中的第一个唯一字符

    /* * @lc app=leetcode.cn id=387 lang=c * * [387] 字符串中的第一个唯一字符 * * https://leetcode-cn.com/problems/f ...

  2. leecode刷题(13) -- 字符串中的第一个唯一字符

    leecode刷题(13) -- 字符串中的第一个唯一字符 字符串中的第一个唯一字符 描述: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = & ...

  3. 前端与算法 leetcode 387. 字符串中的第一个唯一字符

    目录 # 前端与算法 leetcode 387. 字符串中的第一个唯一字符 题目描述 概要 提示 解析 解法一:双循环 解法二:Set法单循环 算法 传入测试用例的运行结果 执行结果 GitHub仓库 ...

  4. LeetCode初级算法--字符串02:字符串中的第一个唯一字符

    LeetCode初级算法--字符串02:字符串中的第一个唯一字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog. ...

  5. Java实现 LeetCode 387 字符串中的第一个唯一字符

    387. 字符串中的第一个唯一字符 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = "leetcode" 返回 0. s = ...

  6. LeetCode初级算法之字符串:387 字符串中的第一个唯一字符

    字符串中的第一个唯一字符 题目地址:https://leetcode-cn.com/problems/first-unique-character-in-a-string/ 给定一个字符串,找到它的第 ...

  7. 字符串中的第一个唯一字符 python

    给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. s = "leetcode" 返回 0. s = "loveleetcode&qu ...

  8. LeetCode 387. First Unique Character in a String (字符串中的第一个唯一字符)

    题目标签:String, HashMap 题目给了我们一个 string,让我们找出 第一个 唯一的 char. 设立一个 hashmap,把 char 当作 key,char 的index 当作va ...

  9. [Swift]LeetCode387. 字符串中的第一个唯一字符 | First Unique Character in a String

    Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...

  10. LeetCode 387: 字符串中的第一个唯一字符 First Unique Character in a String

    题目: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. Given a string, find the first non-repeating charact ...

随机推荐

  1. 搜索"xxxx"的进程,同时杀进程

    一.搜索"xxxx"的进程,同时杀进程,命令如下: ps -ef|grep xxxx|grep -v 'grep'|awk '{print $2}'|xargs kill -9 命 ...

  2. 镜像制作工具diskimage-builder介绍

    简介 diskimage-builder(简称dib)是一款用于构建系统镜像的工具,它被设计用于OpenStack的TripleO项目,支持qocw2.vhd.raw等主流镜像格式. 在众多系统镜像构 ...

  3. WeetCode2滑动窗口系列

    系列文章目录和关于我 一丶[无重复字符的最长子串](3. 无重复字符的最长子串 - 力扣(Leetcode)) 思路: 维护一个窗口,窗口中不存在重复的字符,窗口右边界从第一个字符移动到最后,使用一个 ...

  4. 3.5:基于Python的KNN算法简单实现

    〇.目标 1.使用pycharm工具创建项目demo: 2.使用python语言实现KNN算法. 一.创建脚本文件 二.编写KNN算法程序 KNN算法所阐述的核心思想在KNN.py文件的注释部分具有详 ...

  5. 【每日一题】【map、数组、二维数组排序、静态函数和库函数】2022年2月24日-NC97 字符串出现次数的TopK问题

    描述给定一个字符串数组,再给定整数 k ,请返回出现次数前k名的字符串和对应的次数.返回的答案应该按字符串出现频率由高到低排序.如果不同的字符串有相同出现频率,按字典序排序.对于两个字符串,大小关系取 ...

  6. python安装包出现的两个问题error: Unable to find vcvarsall.bat、提示No module named Crypto.Cipher

    python安装包出现的两个问题 error: Unable to find vcvarsall.bat No module named Crypto.Cipher error: Unable to ...

  7. pycharm恢复删除文档与查询修改前数据

    1.pycharm恢复删除文档 第一步: 第二步: 2.pycharm查询修改前文档数据 第一步: 第二步:

  8. 如何使用 IdGen 生成 UID

    在分布式系统中,雪花 ID 是一种常用的唯一 ID 生成算法.它通过结合时间戳.机器码和自增序列来生成 64 位整数 ID,可以保证 ID 的唯一性和顺序性. 在.Net 项目中,我们可以使用 IdG ...

  9. pyqt5制作俄罗斯方块小游戏-----源码解析

    一.前言 最近学习pyqt5中文教程时,最后一个例子制作了一个俄罗斯方块小游戏,由于解释的不是很清楚,所以源码有点看不懂,查找网上资料后,大概弄懂了源码的原理. 二.绘制主窗口 将主窗口居中,且设置了 ...

  10. jmeter 之性能分布式压测

    背景: 当并发量达到一定数量时,单台测试设备不足以支撑,甚至会出现内存溢出等情况,解决这个问题就可用分布式测试,使用多台测试设备来达到更大的用户并发数. 原理: 1.一台设备作为调度机(master) ...