Leetcode 387题 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 exist, return -1.
Examples:
s = "leetcode"
return 0.
s = "loveleetcode",
return 2.
Note: You may assume the string contain only lowercase letters.
题目大意: 找出不重复的第一个字母。返回其位置,如果没有就返回-1. 假设字母全是小写。
一看不重复,其实就是只出现一次。自然就想到了.count()方法,和Counter函数。
思路一:
遍历字符串,然后单独计算出每个字符的重复次数,如果重复次数为1,说明这个数不重复。.index()方法求出这个字符在整个字符串的位置,存到列表中,最后求出列表中最小的数,就是第一个出现地不重复的字符的所在位置。
直接给代码。
class Solution:
def firstUniqChar(self, s: str) -> int:
res = []
for i in set(s):
if s.count(i) == 1:
res.append(s.index(i))
if len(res) != 0:
return min(res)
else:
return -1
思路二:
改进一下,既然假设字母都是小写,干脆直接把小写字母的字典放上来。 思路一样。第二行省了定义index的步骤了。 不过这样速度会更快一点。字典复杂度低。
class Solution:
def firstUniqChar(self, s: str) -> int:
temp = "abcdefghijklmnopqrstuvwxyz"
index = [s.index(i) for i in temp if s.count(i)==1]
return min(index) if len(index)>0 else -1
疫情中的英国,
前段时间生病了,生活终于回到了正轨。
加油!
28/05/2020