第一个只出现一次的字符(LinkedHashMap与HashMap)
2019-03-20 22:08
13 查看
版权声明:如需转载,请写明出处 https://blog.csdn.net/weixin_43113679/article/details/88701593
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
import java.util.LinkedHashMap; import java.util.Map; public class Solution { public int FirstNotRepeatingChar(String str) { if(str.length()<1){ return -1; } char[] ch =str.toCharArray(); Map<Character,Integer> map = new LinkedHashMap(); for(int i =0;i<ch.length;++i){ if(map.containsKey(ch[i])==false){ map.put(ch[i], i); }else{ map.put(ch[i],-1); } } int index=-1; for(Character c:map.keySet()){ if(map.get(c)>=0){ index =map.get(c); break; } } return index; } }
主要说一下一开始自己用的hashmap但是在最后一个for循环遍历时出现了问题,答案虽然也对,但是不是正确答案,只是只出现第一次的字符之一,还不是第一个:
因为hashmap底层是散列表,数据存储与插入顺序无关,比如依次put进q,w,e字符,可能遍历的时候是e,w,q的顺序。而linkedhashmap底层有一个双向循环链表来维护其存储顺序,遍历的时候是按照插入顺序来遍历的。
相关文章推荐
- 第一个只出现一次的字符 用hashMap和hashTable实现
- 【剑指offer】【第一个只出现一次的字符】hanhMap&LinkedHashMap
- 《剑指Offer》面试题:找到第一个只出现一次的字符
- 1130:找第一个只出现一次的字符
- 华为(6)第一个只出现一次的字符
- (1)第一个出现一次字符
- 31、第一个只出现一次的字符
- 第17题:返回字符串中第一个只出现一次的字符
- 剑指 offer set 15 第一个只出现一次的字符
- 一个字符串中查找第一个只出现一次的字符。 要求复杂度为O(N).
- 剑指Offer面试题35(java版):第一个只出现一次的字符
- [剑指Offer]第一个只出现一次的字符
- 26.在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 第一个只出现一次的字符
- No17、题目:在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。
- 编程算法 - 第一个仅仅出现一次的字符 代码(C)
- 【一些题】剑指offer:在字符串中找出第一个只出现一次的字符
- 不用for和while从任意字符串中找出第一个仅出现一次的字符
- 找出第一个只出现一次的字符
- 输出一串字符中第一个只出现一次的字符/不能使用while/for循环