给定一个字符串,找到第一个非重复字符并输出

题干

leetcode 387. First Unique Character in a String

思路

两次循环,
第一次循环,使用map,key是字符,value记录出现的次数
第二次循环,找到value为1的key在字符串中的位置

代码

class Solution {
    public int firstUniqChar(String s) {
        Map<Character,Integer>map=new HashMap<Character,Integer>();
        char [] cstr=s.toCharArray();
        for(char c:cstr){
            //c有对应的value就取,如果没有,默认为0,然后将这个值+1,计数
            map.put(c,map.getOrDefault(c,0)+1);
        }	
        int i=0;
        for(char c:cstr){
            if(map.get(c)==1)
                return i;
            i++;
        }
        return -1;
    }
}

python

class Solution:
    def firstUniqChar(self, s):
        #这个count包含了字符和其对应的出现次数
        count=collections.Counter(s)
        
        index=0
        for c in s:
            if count[c]==1:
                return index
            else:
                index+=1
        return -1
            
全部评论

相关推荐

09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务