只出现⼀次的字符-Python版
题⽬描述
在⼀个字符串(0<=字符串长度<=10000,全部由字母组成)中到第⼀个只出现⼀次的字符,并返回它的位置, 如果没有则返回 -1(需要区分⼤⼩写).
思路
采⽤字典,键为字符,次数为键对应的值。第⼀次遍历字符串,记录出现次数,第⼆次遍历字符串,次数为1的字符,此时返回索引
代码实现
1# -*- coding:utf-8 -*-
2class Solution:
3def FirstNotRepeatingChar(self, s):
4# write code here
5if len(s)==0:
6return -1
7        sdic = {}
8for i in s:
9if i not in sdic:
单个字符视为长度为1的字符串
10                sdic[i]=1
11else:
12                sdic[i] += 1
13for j in range(len(s)):
14if sdic[s[j]]==1:
15return j
16return -1
奇怪的是,使⽤次数和索引构成的列表作为键的值,在⽜客上返回错误,在Python编辑器⾥⾯就是正确的
代码如下(在编辑器⾥⾯可以,在⽜客上不⾏)
1# -*- coding:utf-8 -*-
2class Solution:
3def FirstNotRepeatingChar(self, s):
4# write code here
5if not s:
6return -1
7        sdic = {}
8for i in range(len(s)):
9if s[i] not in sdic.keys():
10                temp=[]
11                temp.append(1)
12                temp.append(i)
13                sdic[s[i]]=temp
14else:
15                sdic[s[i]][0] +=1
16for v in sdic.values():
17if v[0]==1:
18return v[1]
19return -1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。