第34题“第一个只出现一次的字符”

题目描述

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

时间限制:1秒 空间限制:32768K 热度指数:213452

思路

利用哈希表遍历计数,时间复杂度O(n),空间复杂度O(n)。

import java.util.HashMap;
//直接借助哈希来做即可
public class Solution {
    public int FirstNotRepeatingChar(String str) {
        if(str == null){
            return -1;
        }
        HashMap<Character,Integer> hashMap = new HashMap<>();
        int pos = -1;
        char [] chArr = str.toCharArray();//转为字符数组里面
        for(int i = 0;i < chArr.length;i++){
            if(hashMap.containsKey(chArr[i])){//包含直接加1
                hashMap.put(chArr[i],hashMap.get(chArr[i])+1);
            }else{
                hashMap.put(chArr[i],1);
            }
        }
        //遍历,选出第一个的位置
        for(int i = 0;i < chArr.length;i++){
            if(1 == hashMap.get(chArr[i])){
                pos = i;
                break;
            }
        }
        return pos;
    }
}
发布了79 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u010917150/article/details/102210563