美文网首页第四单元的LeetCode题解
字符串中的第一个唯一字符

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

作者: 第四单元 | 来源:发表于2018-04-08 10:01 被阅读31次

题目

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

案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.

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

思路

思路一:直观的想法是从头开始对每个字符进行判断,找到第一个不重复字符就停止。每次判断都要对字符串进行遍历一遍。
思路二:考虑字符串只包含26个小写英文字母。一次遍历就可以统计出每个字母出现的次数。一个小知识点:char可以当做数字来进行加减运算,如'b'-'a'==0。
下面的代码根据思路二实现

代码

class Solution {
    public int firstUniqChar(String s) {
        char[] arrs = s.toCharArray();
        int[] times = new int[26];  //保存26个字母出现的次数
        for(int i = 0; i < times.length;i++)
            times[i]=0;   //初始化为0
        for(int i =0; i < arrs.length;i++)
            times[arrs[i] - 'a']++;       
        for(int i=0;i<arrs.length;i++){
            if(times[arrs[i] - 'a'] == 1)   //找到第一个出现一次得字母
                return i;
        }
        return -1;
    }
}

相关文章

网友评论

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

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