LeetCode.387. 字符串中的第一个唯一字符

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

案例:

s = “leetcode”
返回 0.
s = “loveleetcode”,
返回 2.

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

分析:
题解一:
开数组存字符,首次遍历将各个字符次数存入数组,再次遍历将第一次出现的次数为 1 的字符返回

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

题解二:
借助 indexOf 和 lastIndexOf 函数,
indexOf 从开始查找字符串中指定字符,如果找到返回第一次出现的下标,如果没找到返回 -1,
lastIndexOf 从末尾查找字符串中指定字符,如果找到返回第一次出现的下标,如果没找到返回 -1
遍历字符串,对每个字符进行 indexOf 和 lastIndexOf 返回结果,如果结果相同说明只字符串中只存在一个该字符,即找到了

class Solution {
    public int firstUniqChar(String s) {
        for (int i = 0; i < s.length(); i++) {
            if (s.indexOf(s.charAt(i)) == s.lastIndexOf(s.charAt(i)))
                return i;
        }
        return -1;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-16 14:00
白火同学:其实你可以了解一下HR在Boss聊天的机制,想赢牌的前提是先会玩牌。 如果HR长时间没有理你,有可能是因为你的消息被其他应聘者的消息给挤到下面了,HR从上到下有可能只看个三四百个人就要到理想数量的简历了,而你恰好没有被看到,时间一长,你的消息在越来越下面。这种情况就需要你自己活跃一下,把消息提上去。 也可能是HR招的合适的人选了,但会一直挂着岗位,为了省重新开招聘岗位的钱,方便后面随时修改招聘要求。 当然也可能是HR吃饱了没事耍你玩,要了你的简历又不看,就看你自己怎么理解了。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务