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

题目

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

示例

s = “leetcode”
返回 0

s = “loveleetcode”
返回 2

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法1
python实现

用 counter做~

class Solution:
    def firstUniqChar(self, s: str) -> int:
        n=len(s)
        ss=list(s)
        flag='flag'
        counter = collections.Counter()
        for i in ss:
            counter[i]+=1
        for i,v in counter.items():
            if v==1:
                flag=i
                break
        for i in range(n):
            if flag==ss[i]:
                return i
        if flag=='flag':
            return -1

力扣 387. 字符串中的第一个唯一字符_第1张图片##### 方法1改进

class Solution:
    def firstUniqChar(self, s: str) -> int:
        counter = collections.Counter(s)
        for i,v in enumerate(s):
            if counter[v]==1:
                return i
        return -1

力扣 387. 字符串中的第一个唯一字符_第2张图片

方法2
Java实现
class Solution {
    public int firstUniqChar(String s) {
        int res = -1;
        // 记录字符出现次数
        HashMap<Character, Integer> hashMap = new HashMap();
        for (int i = 0; i < s.length(); i++) {
            if (hashMap.containsKey(s.charAt(i))) {
                hashMap.put(s.charAt(i), hashMap.get(s.charAt(i)) + 1);
            } else {
                hashMap.put(s.charAt(i), 1);
            }
        }
        // 寻找不重复值
        for (int i = 0; i < s.length(); i++) {
            if (hashMap.get(s.charAt(i)) == 1) {
                res = i;
                break;
            }
        }

        return res;
    }
}

在这里插入图片描述

Java实现2
class Solution {
    public int firstUniqChar(String s) {
        Map<Character, Integer> map = new HashMap<>();
        
        for (int i=0; i<s.length(); i++){
            if (!map.containsKey(s.charAt(i))) map.put(s.charAt(i),1);
            else map.put(s.charAt(i),2);
        }
        for (int i=0; i<s.length(); i++){
            if (map.get(s.charAt(i))==1) return i;
        }
        return -1;
    }
}

力扣 387. 字符串中的第一个唯一字符_第3张图片

你可能感兴趣的:(力扣,leetcode,算法,职场和发展)