首页 > 其他分享 >387. 字符串中的第一个唯一字符

387. 字符串中的第一个唯一字符

时间:2023-10-23 14:34:24浏览次数:25  
标签:字符 return dic char 387 字符串 True

目录

题目

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

示例 1:

输入: s = "leetcode"
输出: 0

示例 2:

输入: s = "loveleetcode"
输出: 2

示例 3:

输入: s = "aabb"
输出: -1

法一、字典

class Solution:
    def firstUniqChar(self, s: str) -> int:
        dic = {}
        for c in s:#遍历字符串中的每个字符   
            if c not in dic:#如果字符不在字典里,写入字典,并赋值True
                dic[c] = True
            else:#如果字符已经在字典里了,修改字典对应的值为False
                dic[c] = False

        for i, c in enumerate(s):#遍历字符串中的每个字符   
            if dic[c] == True:#找到第一个值为True的下标并返回
                return i
        return -1#如果遍历完没找到值为True的,返回-1

法二、计数

class Solution:
    def firstUniqChar(self, s: str) -> int:
        char_count = {}
        for char in s:
            if char in char_count:
                char_count[char] += 1
            else:
                char_count[char] = 1

        for i, char in enumerate(s):
            if char_count[char] == 1:
                return i

        return -1
  • Counter类计数
from collections import Counter

class Solution:
    def firstUniqChar(self, s: str) -> int:
        cnt = Counter(s)#将字符串 s 转化为一个计数器对象 cnt,其中每个字符作为键,出现的次数作为值。
        for i, char in enumerate(s):
            if cnt[char] == 1:
                return i
        return -1

法三、字符串内置函数rindex()

  • index():用于查找字符串中指定值第一次出现的位置
  • rindex():用于查找字符串中指定值最后一次出现的位置
class Solution:
    def firstUniqChar(self, s: str) -> int:
        for i, char in enumerate(s):
            if s.index(char) == s.rindex(char):
                return i
        return -1

标签:字符,return,dic,char,387,字符串,True
From: https://www.cnblogs.com/lushuang55/p/17782322.html

相关文章

  • 通过pandas读取excel数据,很多数据开头带有'特殊字符,如何处理?
    大家好,我是皮皮。一、前言前几天在Python最强王者群【wen】问了一个Pandas数据处理的问题,一起来看看吧。请教问题:通过pandas读取excle数据,很多数据开头带有'特殊字符,我用replace或者strip()函数处理均无法处理。......
  • 代码训练营第十一天(Python)| 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150
    20.有效的括号思路:分析出三种情况,画图模拟。写代码容易写错。classSolution:defisValid(self,s:str)->bool:a_stack=list()foriins:ifi=='(':a_stack.append(')')elifi=='{':......
  • 字符串逆序输出改错(二)(二级指针)
    代码:如下1#include<malloc.h>2#include<stdio.h>34voidgetMemory(intlen,char*p)5{6p=(char*)malloc(len);7}8intmain()9{10charsrc[]="hello,world";11char*dest=NULL;12char*d=NUL......
  • 无涯教程-AWK - 字符串函数
    AWK具有以下内置String函数-asort(arr[,d[,how]]) 此函数使用GAWK的常规规则对arr的内容进行排序以比较值,并使用从1开始的连续整数替换排序后的值arr的索引。[Learnfk]$awk'BEGIN{arr[0]="Three"arr[1]="One"arr[2]="Two"print"Arrayelementsbefo......
  • 程序语言基础之正则表达式的字符偶数个配置
    例题展示例题解决其中,*指的是将他前面的字符重复0次或者若干次;例如:b*可以为b,也可以为bb,bbb等;......
  • 算法笔试题:有效的括号字符串,常规栈思路
    题:给定一个只包含三种字符的字符串:(,)和*,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:任何左括号(必须有相应的右括号)。任何右括号)必须有相应的左括号(。左括号(必须在对应的右括号之前)。*可以被视为单个右括号),或单个左括号(,或一......
  • C#中如何根据GB2312字符集区位码获得汉字?
    一、GB2312字符集汉字编码间的转换1、区位码转换为国标码方法如下:国标码高位字节=(区号)H+20H国标码低位字节=(位号)H+20H区位码转换为国标码的方法是加2020H 2、国标码转换为机内码方法如下:机内码高位字节=(国标码)H+80H机内码低位字节=(国标码)H+80H国标码转换为机内......
  • 在JavaScript中,如何检查空字符串、未定义或空值?
    内容来自DOChttps://q.houxu6.top/?s=在JavaScript中,如何检查空字符串、未定义或空值?JavaScript中是否有string.Empty,还是需要单独检查""?空字符串、未定义、空值等要检查一个真值:if(strValue){//strValue是一个非空字符串,true,42,Infinity,[],等等}要检查一个假......
  • 1253: 统计字符出现的频度
    1253:统计字符出现的频度题目描述写一个算法统计在输入字符串中各个不同字符出现的频度并将结果输出(字符串中的合法字符为A-Z之间的26个字母和0-9之间的10个数字)。输入多组数据,每组数据有一行,为待统计字符频度的字符串。当字符串为“0”时,输入结束。输出对于每组数据输出......
  • 巧用模板字符串将未知变量转换为string类型,避免报错
    可理解为将变量向字符串类型转换的语法糖用法我们通常会遇到需要用String.prototype上的方法处理变量,如果该变量为null、undefined、Object则不能直接用字符串方法,也不易于统一处理为字符串;使用模板字符串包裹该变量,则可以简单粗暴的将任意类型转换为字符串类型,避免报错。案例:......