leetcode 387: 字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
思路一:
使用hash表存储频数。对字符串进行2次遍历。
第一次遍历统计频数。第二次遍历找到频数为1的字符下标。
int index = -1; HashMap<Character,Integer> map = new HashMap<>(); for(int i = 0; i < s.length();i++){ if(map.containsKey(s.charAt(i))){ map.put(s.charAt(i),map.get(s.charAt(i))+1); }else{ map.put(s.charAt(i),1); } } for(int i = 0 ; i < s.length();i++){ if(map.get(s.charAt(i)) == 1){ index = i; break; } } return index; 解答成功: 执行耗时:34 ms,击败了10.53% 的Java用户 内存消耗:38.9 MB,击败了60.55% 的Java用户
思路2:
使用哈希表存储元素和它的下标。当元素出现多次(两次及两次以上)时,将下标改为-1。
然后将哈希表遍历一遍找到最小的下标。
public int firstUniqChar(String s) { int index = s.length(); HashMap<Character,Integer> map =