首页 > 试题广场 >

第一个只出现一次的字符

[编程题]第一个只出现一次的字符
  • 热度指数:565045 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)


数据范围:,且字符串只有字母组成。
要求:空间复杂度 ,时间复杂度
示例1

输入

"google"

输出

4
示例2

输入

"aa"

输出

-1
class Solution:
    def FirstNotRepeatingChar(self , strstr) -> int:
        # write code here
        l=[]
        for i in str:
            if str.count(i)==1:
                l.append(str.index(i))
        if len(l)==0:
            return -1
        else:
            return l[0]
发表于 2022-12-19 22:20:38 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        # write code here
        times = dict()
        que = list()
        for item in str:
            times[item] = times.get(item, 0) +1 
            if item not in que and times[item]==1:
                que.append(item)
            elif item in que:
                que.remove(item)
            else:
                pass
        
        return str.index(que[0]) if len(que)>0 else -1

发表于 2022-09-05 21:16:38 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        # write code here
        res = {}
        for idx,i in enumerate(str):
            if i in res.keys():
                res[i] = -1
            else:
                res[i] = idx
                
        for j in res.values():
            if j!=-1:
                return j
        
        return -1
发表于 2022-08-14 19:25:40 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        # write code here
        if not str:
            return -1
        white_list = []
        black_list = []
        for s in str:
            if s not in black_list:
                if s not in white_list:
                    white_list.append(s)
                else:
                    white_list.remove(s)
                    black_list.append(s)
        return str.index(white_list[0]) if white_list else -1

发表于 2022-07-26 16:43:47 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        # write code here
        res = []
        for x in set(str):
            if str.count(x) == 1:
                res.append(str.index(x))
        return min(res) if res else -1

发表于 2022-06-19 22:13:09 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        list = []
        for i in str:
            list.append(i)
        list1 = []
        for j in list:
            if list.count(j) == 1:
                list1.append(list.index(j))
                return list1[0]
        return -1
发表于 2022-05-12 23:06:47 回复(0)
class Solution:
    # 哈希表
    # 时间复杂度:O(n)  空间复杂度:O(1)
    def FirstNotRepeatingChar(self , str: str) -> int:
        mp = {}
        for i in str:
            if i in mp:
                mp[i] += 1
            else:
                mp[i] = 1
        n = -1
        for i in str:
            n += 1
            if mp[i] == 1:
                return n 
        return -1

class Solution:
    # 哈希表 + 队列
    # 时间复杂度:O(n)  空间复杂度:O(1)
    def FirstNotRepeatingChar(self , str: str) -> int:
        mp = {}
        q1 = []
        q2 = []
        for i in range(len(str)):
            # 没有出现过的字符
            if str[i] not in mp:
                mp[str[i]] = i   # 记录位置
                q1.append(str[i])
                q2.append(i)
            # 找到重复字符
            else:
                # 重复标记位置记为-1
                mp[str[i]] = -1
                # 弹出前面所有的重复过的字符
                while len(q1) != 0 and mp[q1[0]] == -1:
                    q1.pop(0)
                    q2.pop(0)
        return -1 if len(q2) == 0 else q2[0]
发表于 2022-05-09 14:49:02 回复(0)
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param str string字符串 
# @return int整型
#
class Solution:
    def FirstNotRepeatingChar(self , string: str) -> int:
        # write code here
        arr=[0]*len(string)
        for i in range(len(string)):
            for j in range(i+1,len(string)):
                if string[i]==string[j]:
                    arr[i]=arr[i]+1
                    arr[j]=arr[j]+1
        for i in range(len(arr)):
            if arr[i]==0:
                return i
        return -1       

发表于 2022-04-19 15:40:29 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        # write code here
        # 记录字符的次数
        d = {}
        for ch in str:
            d[ch] = d.get(ch, 0) + 1
        res = []
        # 记录出现1次的字符的位置
        for ch in d:
            if d[ch] == 1:
                res.append(str.index(ch))
        if len(res) == 0:
            return -1
        return min(res)

发表于 2022-04-19 11:35:01 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        # write code here
        li=[]
        for i in range(len(str)):
            if str[i] not in li:
                li.append(str[i])
            else:
                li.remove(str[i])
        if len(li)!=0:
            return str.index(li[0])
        else:
            return -1

发表于 2022-03-21 23:10:07 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        # write code here
        d = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
#         d = set(str)
        pos = -1
        for c in d:
            if str.count(c) == 1:
                idx = str.index(c)
                if pos == -1&nbs***bsp;pos > idx:
                    pos = idx
        return pos

发表于 2022-03-03 08:34:36 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        res = []
        for i in str:
            if i not in res:
                res.append(i)
        for j in res:
            if str.count(j) == 1:
                return str.index(j)
        return -1

发表于 2022-01-06 17:10:10 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        # write code here
        dic={}
        for i in str:
            if i in dic.keys():
                dic[i]+=1
            else:
                dic[i]=1
        a=[k for (k,v) in dic.items() if v==1]
        if a:
            return list(str).index(a[0])
        else:
            return -1

发表于 2022-01-05 12:34:31 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        # write code here
        d, l = {}, list()
        for i in str:
            d[i] = d.get(i, 0) + 1
        for j in d:
            if d[j] == 1:
                l.append(str.find(j))
        if not l:
            return -1
        return min(l)
发表于 2021-12-19 12:54:52 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , strs: str) -> int:
        # write code here
        l = len(strs)
        if l == 0:
            return -1
        elif l == 1:
            return strs[0]
        dic = {}
        for i in range(l):
            dic[strs[i]] = [0,i]
        for i in range(l):
            dic[strs[i]][0] += 1
        for k,v in dic.items():
            if v[0] == 1:
                return v[1]
        return -1

发表于 2021-12-01 17:25:04 回复(0)
class Solution:
    def FirstNotRepeatingChar(self , str: str) -> int:
        mapping = {}
        for c in str:
            mapping[c] = 1 if c not in mapping else mapping[c] + 1
        for i in range(len(str)):
            if mapping[str[i]] == 1:
                return i 
        return -1

发表于 2021-11-13 23:03:02 回复(0)
w=input()
d={}
w=list(w)
for key in w:
    d[key]=d.get(key,0)+1
flag=0
for key2 in d:
    if d[key2]==1:
        flag=1
        break
if flag==0:
    print("-1")
else:
    print(w.index(key2))
发表于 2021-09-24 20:28:41 回复(0)
# 哈希表
class Solution:
    def FirstNotRepeatingChar(self, s):
        # write code here
        hashTable = [-1] * 52
        for i, ch in enumerate(s):
            if ch < 'a':
                tmp = ord(ch) - ord('A')
            else:
                tmp = ord(ch) - ord('a') + 26
            if hashTable[tmp] >= 0:
                hashTable[tmp] = -2
            else:
                hashTable[tmp] = i 
        minI = len(s)
        for i in hashTable:
            if i >= 0 and minI > i:
                minI = i 
        if minI == len(s):
            return -1
        return minI

发表于 2021-09-13 16:54:25 回复(0)
写了一个用栈的思路,代码比较好理解
# -*- coding:utf-8 -*-
class Solution:
    def FirstNotRepeatingChar(self, s):
        # write code here
        alist = list(s)
        print(alist)
        for i in range(len(alist)):
            temp = alist.copy()
            temp.pop(i)
            if alist[i] not in temp:
                return i
        return -1


发表于 2021-09-09 14:48:14 回复(0)