剑指Offer34:第一个只出现一次的字符(Java)

参考牛客作者loveNX的题解:https://www.nowcoder.com/questionTerminal/1c82e8cf713b4bbeb2a5b31cf5b0417c?f=discussion

解题思路:

新建一个HashMap,键是字符,值保存字符出现的次数。遍历字符串把信息保存在map集合中。因为结果是要返回位置,所以再一次遍历字符串,判断字符的出现的次数是不是1,是则返回坐标。
这里主要用到两个方法:1. map集合的containsKey(a)方法:判断集合是否包含键a 2. 字符串的charAt(i)方法:指定索引i处的char值

题目描述:

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

java代码:

import java.util.HashMap;
public class Solution {
    public int FirstNotRepeatingChar(String str) {
        HashMap <Character,Integer> map=new HashMap<Character,Integer>();
        for(int i=0;i<str.length();i++){
            if(!map.containsKey(str.charAt(i))){
                map.put(str.charAt(i),1);
            }else{
                int a=map.get(str.charAt(i));
                map.replace(str.charAt(i),++a);
            }
        }
        for(int i=0;i<str.length();i++){
            if(map.get(str.charAt(i))==1){
                return i;
            }
        }
        return -1;
    }
}
posted @ 2020-01-13 16:04  31楼下小黑  阅读(163)  评论(0编辑  收藏  举报