0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:电子设计 作者:电子设计 2020-12-10 22:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

一、引子

这是由LeetCode官方推出的的经典面试题目清单~
这个模块对应的是探索的初级算法~旨在帮助入门算法。我们第一遍刷的是leetcode推荐的题目。

二、题目

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

案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.

1、思路

首先我们可以想到这道题需要的是一个不重复的字符,我们顺序找到第一个不重复的字符,把其索引存起来,返回最小的索引也就是第一个不重复的字符了。

注:使用count方法,会增加时间复杂度,所以我们用字典记录各字符的索引。如果重复出现,则索引值需要加上len(s),小于len(s)的那个索引就是我们求的值。

2、编程实现

python

class Solution(object):
    def firstUniqChar(self, s):
        """
        :type s: str
        :rtype: int
        """
        #算法超时
        # res = []
        # for i in s:
        #     if s.count(i) == 1:
        #         res.append(s.index(i))
        # if len(res):
        #     return min(res)
        # return -1
        
        # 用字典记录各字符的索引。如果重复出现,则索引值需要加上len(s)
        d = {}
        for i in range(len(s)):
            if s[i] not in d:
                d[s[i]] = i
            else:
                d[s[i]] += len(s)
        
        if len(s) and min(d.values()) < len(s) :
            return min(d.values())
        return -1

分享技术,乐享生活:我们的公众号计算机视觉这件小事每周推送“AI”系列资讯类文章,欢迎您的关注!

本文由博客一文多发平台 OpenWrite 发布!

审核编辑 黄昊宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1813

    文章

    49793

    浏览量

    262017
  • 机器学习
    +关注

    关注

    66

    文章

    8542

    浏览量

    136326
  • 深度学习
    +关注

    关注

    73

    文章

    5591

    浏览量

    123997
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    字符串关联数字变量如何使用?我们的地址都是16位数据,可以使用16位数字变量显示字符串吗?

    字符串关联数字变量如何使用?我们的地址都是16位数据,可以使用16位数字变量显示字符串吗?
    发表于 12-15 08:24

    飞凌嵌入式ElfBoard-标准IO接口之格式化输出

    :要操作的文件描述。format:表示C 字符串,包含了要被写入到fd的格式化数据。...:表示附加可变参数,根据不同的 format 字符串,函数可能需要
    发表于 11-11 08:43

    labview如何生成字符串返回的dll

    labview如何生成dll,如下图,要求输入,类型是字符串,返回类型也是字符串
    发表于 08-28 23:20

    在Python字符串逆序有几种方式,代码是什么

    对于给定的字符串,逆序输出,这个任务对于python来说是种很简单的操作,毕竟强大的列表和字符串处理的
    的头像 发表于 08-28 14:44 804次阅读

    harmony-utils之StrUtil,字符串工具类

    harmony-utils之StrUtil,字符串工具类 harmony-utils 简介与说明 [harmony-utils] 款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类
    的头像 发表于 07-03 11:32 402次阅读

    STM32C031C6使用的是UART2通讯,通过printf()函数发送字符串时,汉字错码怎么解决?

    使用的是UART2通讯,通过printf()函数发送字符串时,汉字错码(见下图),应该是KEIL哪里没有设置好的问题。 启用了UART2的中断接收,可以接收到串口调试助手的数据,但是缓存区的指针没有归零,下次接收时缓存区的内容接续(如下图所示),不知道用什么命令来清除
    发表于 03-07 12:30

    请问如何用Verilog实现将ascaii码数值字符串转换成定点数?

    我需要接收ascaii码字符串,内容是12位有效数字的数值,带小数。我不知道怎么把小数部分转换成定点数。
    发表于 01-23 21:57

    TL16C554发送一串数据,在回环测试总读不出最后一字节数据,为什么?

    用TL16C554已经实现了发送数据没有问题 接收数据出现以下问题 发送一串数据,在回环测试总读不出最后一字节数据 发送单个字符的时候,LSR0显示有数据,读出的永远是0x00
    发表于 01-22 06:57

    AN-645:HD44780字符LCD与MicroConverter的接口(uC014)

    电子发烧友网站提供《AN-645:HD44780字符LCD与MicroConverter的接口(uC014).pdf》资料免费下载
    发表于 01-14 16:22 0次下载
    AN-645:HD44780<b class='flag-5'>字符</b>LCD与MicroConverter的接口(uC014)

    字符串在数据库的存储方式

    数据库是现代信息技术存储和管理数据的核心组件。字符串作为最常见的数据类型之,在数据库的存储方式对其性能和可扩展性有着重要影响。 数据类型 固定长度
    的头像 发表于 01-07 15:41 1278次阅读

    字符串在编程的应用实例

    字符串在编程中有着广泛的应用,它们被用于表示文本数据、处理用户输入、构建动态内容等。以下是字符串在编程的应用实例: 1. 用户输入与输出 用户输入 :程序通常需要从用户那里获取输
    的头像 发表于 01-07 15:33 1156次阅读

    字符串字符数组的区别

    大多数编程语言中是高级数据结构,通常由语言的运行时环境直接支持。字符串通常以连续的字符序列存储,但它们不仅仅是字符的简单集合。
    的头像 发表于 01-07 15:29 1719次阅读

    字符串反转的实现方式

    函数自身调用来解决问题的方法。在字符串反转,递归可以用来逐个字符地构建反转后的字符串。 实现步骤 基本情况 :如果字符串为空或只有
    的头像 发表于 01-07 15:27 1276次阅读

    字符串处理方法 字符串转数字的实现

    在编程,将字符串转换为数字是常见的需求。不同的编程语言有不同的方法来实现这功能。以下是
    的头像 发表于 01-07 15:26 1428次阅读

    养成良好的编程习惯|堆内存初值不定是0

    ;} 代码很简单,使用 malloc 申请段堆内存,假设内存空间足够大。 通过 getchar 配合 while 循环,从标准输入获取一个字符串,直到遇到换行结束。 最后就是把获取的字符串
    的头像 发表于 12-18 09:14 580次阅读