387. 字符串中的第一个唯一字符(java)

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

案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.
 

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:数组模拟HashMap

class Solution {
    public int firstUniqChar(String s) {
        char[] str = s.toCharArray();
        int[] count = new int[26];
        int len = s.length();
        for(int i = 0; i < len; i++){
            count[str[i]-'a']++;
        }
        for(int i = 0; i < len; i++){
            if(count[str[i]-'a'] == 1) return i;
        }
        return -1;
    }
}

解法二:首次出现和最后一次出现重合

class Solution {
    public int firstUniqChar(String s) {
        int result = s.length();
        for(char i = 'a'; i <= 'z'; i++) {
            int index = s.indexOf(i);
            if(index != -1 && s.lastIndexOf(i) == index){
                if(index < result) result = index;
            }
        }
        if(result != s.length()) return result;
        else return -1;
    }
}
发布了136 篇原创文章 · 获赞 19 · 访问量 8044

猜你喜欢

转载自blog.csdn.net/weixin_43306331/article/details/103979221