problem
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)
solution
- 求一个重复字母的集合。
- 寻找第一个不在集合的元素
class Solution(object): def firstUniqChar(self, s): """ :type s: str :rtype: int """ double = [] for x in set(s): if s.count(x)>1: double.append(x) for x,y in enumerate(s): if y not in double: return x return -1
discuss solution
- 建一个包含26个字母数值的list;第一遍循环,每发现一次某字母,对其做一个标示;第二次循环,发现字母标示为(出现1次)
- 根据字母index(first one == last one)(
java特性? s.indexOf(a[i])==s.lastIndexOf(a[i]))
str.rfind(sub[, start[, end]])Return the highest index in the string where substring sub is found, such that sub is contained within s[start:end]. Optional arguments start and end are interpreted as in slice notation. Return -1 on failure.str.rindex(sub[, start[, end]])Like rfind() but raises ValueError when the substring sub is not found.
if s.find(x)==s.rfind(x): return s.find(x)