美文网首页
字符串中的第一个唯一字符

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

作者: 站在海边看远方 | 来源:发表于2020-11-13 16: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/

    相关文章

      网友评论

          本文标题:字符串中的第一个唯一字符

          本文链接:https://www.haomeiwen.com/subject/watbbktx.html