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

第一个只出现一次的字符

作者: zhouwaiqiang | 来源:发表于2019-03-29 16:23 被阅读0次

    题目描述

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

    解题思路

    1. 采用一个LinkedHashMap实现,这个表示有序存储,存储的键为每个出现的字符,值为一个list集合,集合中代表出现了这个键对应的下标索引
    2. 采用这种方式在后续中只需要找到字符对应的值中的size第一个为1的那么就是对应的结果,然后从集合中取出该值返回即可。

    源代码实现

    import java.util.*;
    public class Solution {
        private static Map<Character, List<Integer>> map;
        {
            map = new LinkedHashMap<>();
        }
        public int FirstNotRepeatingChar(String str) {
            if (str==null || str.length()==0) return -1;
            for (int i=0; i<str.length(); i++) {
                char ch = str.charAt(i);
                if (map.containsKey(ch)) {
                    List<Integer> temp = map.get(ch);
                    temp.add(i);
                    map.put(ch, temp);
                } else {
                    List<Integer> temp = new ArrayList<>();
                    temp.add(i);
                    map.put(ch, temp);
                }
            }
            for (Map.Entry<Character, List<Integer>> entry : map.entrySet()) {
                if (entry.getValue().size()==1) return entry.getValue().get(0);
            }
            return -1;
        }
    }
    

    相关文章

      网友评论

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

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