【LC简单】387. 字符串中的第一个唯一字符

简介: 【LC简单】387. 字符串中的第一个唯一字符

题目描述:

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

示例 1:

输入: s = “leetcode”

输出: 0

示例 2:

输入: s = “loveleetcode”

输出: 2

示例 3:

输入: s = “aabb”

输出: -1

提示:

1 <= s.length <= 105

s 只包含小写字母

class Solution {
    public int firstUniqChar(String s) {
    }
}

来源:力扣(LeetCode)

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

解题思路:

s字符串中所包含的字符一定属于26个字母,且题目中说明字符串中只包含小写字母;所以只需要设计一个对应26个字母的大小的数组,字母a对应数组的0下标(cout[ch - ‘a’])… ;遍历字字符串,将字符串中每个字母出现的次数在字母对应的数组位置记录下来;最后再次遍历字符串,字符对应位置的数组元素和1进行比较,第一个为1的元素就是字符串中的第一个唯一字符。73d8c9be8b2a4960a39693770de0ac9a.png

代码实现:

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

提交结果:73d8c9be8b2a4960a39693770de0ac9a.png


目录
相关文章
|
索引
【LeetCode】917. 仅仅反转字母、387. 字符串中的第一个唯一字符
目录 917. 仅仅反转字母 387. 字符串中的第一个唯一字符
48 0
|
6月前
|
存储 索引
LeetCode 387. 字符串中的第一个唯一字符
LeetCode 387. 字符串中的第一个唯一字符
40 0
|
6月前
|
C++
c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)
c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)
80 0
|
5月前
387.字符串中的第一个唯一字符 —> `size()`
387.字符串中的第一个唯一字符 —> `size()`
|
6月前
|
机器学习/深度学习 索引
【力扣】387. 字符串中的第一个唯一字符
【力扣】387. 字符串中的第一个唯一字符
|
6月前
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
6月前
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
【每日一题Day203】LC1016子串能表示从 1 到 N 数字的二进制串 | 枚举 哈希表
48 2
|
6月前
【每日一题Day237】LC1375二进制字符串前缀一致的次数 | 技巧题
【每日一题Day237】LC1375二进制字符串前缀一致的次数 | 技巧题
52 1
|
6月前
|
算法
leetcode:387. 字符串中的第一个唯一字符
leetcode:387. 字符串中的第一个唯一字符
29 0
|
6月前
|
C++ 索引
字符串中的第一个唯一字符(C++)
字符串中的第一个唯一字符(C++)
61 0