题目描述

在一个字符串(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;
    }
}

 

posted on 2020-06-08 18:08  MoonBeautiful  阅读(117)  评论(0编辑  收藏  举报