一、题目

  在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置

二、思路

  详见代码注释。

三、代码

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;


public class Solution {
    public int FirstNotRepeatingChar(String str) {
        if(str==null||str.length()==0){
            return -1;
        }
        
        //统计字符串的个数,注意用LinkedHashMap
        LinkedHashMap<Character, Integer> lhm = new LinkedHashMap<Character, Integer>();
        for (char c : str.toCharArray()) {
            if (lhm.containsKey(c)) {
                lhm.put(c, lhm.get(c) + 1);
            } else {
                lhm.put(c, 1);
            }
        }

        //遍历map,寻找第一个只出现一次的数
        int num = 0;
        Set<Map.Entry<Character, Integer>> set = lhm.entrySet();
        for (Map.Entry<Character, Integer> es : set) {
            char key = es.getKey();
            int value = es.getValue();
            if (value == 1) {
                num = key;
                break;
            }
        }

        //查找索引index
        int index=0;
        
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)==num){
                index=i;
                break;
            }
        }
        
        //返回索引的位置
        return index;
    }
}
View Code

相关文章:

  • 2021-06-13
  • 2022-01-05
  • 2022-02-02
  • 2022-12-23
  • 2021-09-20
  • 2022-12-23
  • 2022-12-23
  • 2021-07-26
猜你喜欢
  • 2021-10-21
  • 2021-07-04
  • 2022-03-04
  • 2022-12-23
  • 2022-12-23
  • 2021-08-13
相关资源
相似解决方案