字符串中的第一个唯一字符

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

案例:
s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.

注意事项:您可以假定该字符串只包含小写字母。


解法1:

思路:把字符串使用toCharArray()转换成字符数组,遍历字符数组,使用LinkedHashMap (顺序不变)以字符为key,字符在字符串中的索引为value,如果key出现不只一次则对应的value置为-1。最后使用entrySet方法遍历map,把第一个value不为-1的value返回,如果遍历结束没有发现有符合要求的,返回-1.

class Solution {
    public int firstUniqChar(String s) {
       Map map=new LinkedHashMap();
        char[] array=s.toCharArray();
        int n=array.length;
        for(int i=0;i entry : map.entrySet()){
            if(entry.getValue()!=-1){
                return entry.getValue();
            }
        }
     return -1;  
    }
}


解法2:

思路:leetcode高效率答案,使用indexOf(),lastIndexOf()等方法。

class Solution {
    public int firstUniqChar(String s) {
     int result = -1;
            for(char c = 'a';c<='z';c++){
                int index = s.indexOf(c);
                if(index != -1 && index == s.lastIndexOf(c)){
                    result = result != -1?Math.min(result,index):index;
                }
            }
            return result;
    }
}


注意:总结 java的集合,entrySet这两块知识。

你可能感兴趣的:(字符串中的第一个唯一字符)