在字符串里找第一个只出现一次的字符

    xiaoxiao2021-04-17  39

     题目描述(来自剑指offer): 在一个字符串(1<=字符串长度<=10000,全部由字母组成) 中找到第一个只出现一次的字符,并返回它的位置。如果字符串为空,返回-1 思路:(利用java的linkedHasMap,保证了字符串的顺序)

    第一次遍历:使Map中 key保存字符,value保存字符出现的频数,

    第二次遍历:找到value为1的那个下标,将其返回

    例如:

    输入:str={"gogoup"}

    输出:4

    代码如下:

    public int solve(String str) { if(str == null|| str.isEmpty()) return -1; char[] ch = str.toCharArray(); //用linkedHashMap可以保证顺序 Map map = new LinkedHashMap (); for(char i : ch) //第一次遍历,设置键值对 { Integer freq = map.get(i); map.put(i, (freq==null? 1:freq + 1)); } for(int i=0; i!= ch.length; i++)//第二次遍历,读取值为1的数,返回索引 { if (map.get(ch[i])==1) return i; } return -1; }

    转载请注明原文地址: https://ju.6miu.com/read-673229.html

    最新回复(0)