剑指offer-第一个只出现一次的字符

Posted MoonBeautiful

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer-第一个只出现一次的字符相关的知识,希望对你有一定的参考价值。

 

题目描述

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

 

题目链接:

https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c?tpId=13&tqId=11187&rp=1&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking

 

 

 

分析:

用一个hashmap,key记录出现的字符,value记录出现的次数。

第一次遍历记录下所有字符及其出现的次数。

第二次遍历找到第一次只出现一次的字符。

 

 

 

import java.util.HashMap;
import java.util.Iterator;
public class Solution {
    public int FirstNotRepeatingChar(String str) {
        if("".equals(str)){
            return -1;
        }
        //key记录字母,value记录字母出现的次数
        HashMap<Character,Integer> count = new HashMap<>();
        char[] arr = str.toCharArray();
        for(int i=0;i < arr.length;i++){
            if(count.containsKey(arr[i])){
                count.put(arr[i],count.get(arr[i])+1);
            }else{
                count.put(arr[i],1);
            }
        }
        //找到第一个只出现一次的字符即返回
        for(int i=0;i < arr.length;i++){
            if(count.get(arr[i]) == 1){
                return i;
            }
        }
        return 0;
    }
}

 

以上是关于剑指offer-第一个只出现一次的字符的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer-第一个只出现一次的字符位置

剑指Offer——第一个只出现一次的字符

剑指offer-第一个只出现一次的字符

[剑指offer]面试题35:第一个只出现一次的字符

剑指Offer--第50题 第一次只出现一次的字符

剑指offer34:第一个只出现一次的字符的位置