美文网首页
第一个只出现一次的字符

第一个只出现一次的字符

作者: youzhihua | 来源:发表于2020-01-19 16:55 被阅读0次

    题目描述

    在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).

    思路

    1. 先将字符串遍历一次,使用map存储每个字符出现的次数。
    2. 再将字符串遍历一次,若当前字符在map中对应的次数是1,即为正确答案。
    3. 若出了两次循环,说明没有正确答案,返回-1即可。

    Java代码实现

    public class Solution {
        public int FirstNotRepeatingChar(String str) {
            Map<Character,Integer> charMap = new HashMap<>();
    
            for (int i = 0; i < str.length(); i++) {
                char cur = str.charAt(i);
                charMap.put(cur,charMap.getOrDefault(cur,0)+1);
            }
    
            for (int i = 0; i <str.length(); i++) {
                if(charMap.get(str.charAt(i)) == 1){
                    return i;
                }
            }
            return -1;
        }
    }
    

    Golang代码实现

    func FirstNotRepeatingChar(str string)int{
        charMap := make(map[byte]int)
    
        for i:=0; i<len(str);i++{
            char := str[i]
    
            if val,ok := charMap[char];ok{
                charMap[char] = val+1
            }else{
                charMap[char] = 1
            }
        }
    
        for i:=0; i<len(str);i++{
            if charMap[str[i]] == 1{
                return i
            }
        }
    
        return -1
    }
    

    相关文章

      网友评论

          本文标题:第一个只出现一次的字符

          本文链接:https://www.haomeiwen.com/subject/bwgrzctx.html