leetcode 387. First Unique Character in a String
Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.
Examples:
s = "leetcode" return 0. s = "loveleetcode", return 2.
Note: You may assume the string contain only lowercase letters.
class Solution(object): def firstUniqChar(self, s): """ :type s: str :rtype: int """ cnt = collections.Counter(s) for i,c in enumerate(s): if cnt[c] == 1: return i return -1
java 里还可以,直接一次扫描s搞定:
class Solution { public int firstUniqChar(String s) { Map<Character, Integer> map = new LinkedHashMap<>(); Set<Character> set = new HashSet<>(); for (int i = 0; i < s.length(); i++) { if (set.contains(s.charAt(i))) { if (map.get(s.charAt(i)) != null) { map.remove(s.charAt(i)); } } else { map.put(s.charAt(i), i); set.add(s.charAt(i)); } } return map.size() == 0 ? -1 : map.entrySet().iterator().next().getValue(); } }
因为map里entryset保存了add顺序???
标签:
leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」