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

来源:互联网 发布:唱歌好听的网络歌手 编辑:程序博客网 时间:2024/05/21 16:11
 题目描述(来自剑指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;    }

0 0
原创粉丝点击