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

2020-11-13  本文已影响0人  站在海边看远方

题目链接:
https://leetcode-cn.com/problems/first-unique-character-in-a-string

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
假定所有的字符都是小写。

题解

这道题是要判断字符串中的不重复字符,且是第一个不重复字符,在字符串中这个字符唯一,并且index最靠前。

我们可以新增一个数组arr,将字符串转化为字符数组,遍历字符数组,c-'a'的值作为arr的index,并且值加1。

然后遍历数组arr,arr[i]==1,i即为我们的预期结果。

arr数组初始化的值都为0,我们第一遍遍历的时候,只有唯一出现的字符,在arr[]里的值才会为1,多次出现值大于1.

下面是代码

public class FirstUniqueCharacter {
    public static void main(String[] args) {
        String s="leetcode";
        int i = firstUniqChar(s);
        System.out.println(s.charAt(i));


    }

    public static int firstUniqChar(String s) {
        //数组长度为26,包含了26个小写字母
        int[] arr = new int[26];

        //目标字符串转为字符数组
        char[] charArray = s.toCharArray();
        
        //遍历字符数组,c取值范围是a~z,如果出现,对应的arr[index]值+1
        //c-'a'取值是0~25
        for (char c : charArray) {
            arr[c-'a']++;
        }

        //遍历arr[],如果arr[i]==1,代表只出现一次,返回
        for (int i = 0; i <s.length() ; i++) {
            if (arr[charArray[i]-'a'] ==1) {
                return i;
            }
        }
        return -1;
    }
}

转载链接:
https://liweiwei1419.gitee.io/leetcode-algo/2020/05/05/leetcode-algo/0387-first-unique-character-in-a-string/

上一篇下一篇

猜你喜欢

热点阅读