剑指Offer 35 第一个只出现一次的字符
2017-04-01 16:15
253 查看
题目描述
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置。如果字符串为空,返回-1思路
暴力法很好解得;你很容想到,遍历一遍记下出现的次数,由于字符不变,很容易也就想到了HashMap喽
代码
static public int FirstNotRepeatingChar(String str) { if (str==null||str.length()==0) return -1; char a[] = str.toCharArray(); //这个数组是多余的内存消耗,应该写成str.charAt(index)获取当前字符 HashMap<Character,Integer> hashMap = new HashMap(); for (int i = 0; i < a.length; i++) { if (hashMap.containsKey(a[i])) //如果出现过 hashMap.put(a[i],hashMap.get(a[i])+1); //将value+1; else hashMap.put(a[i],0); } for (int i = 0; i < a.length; i++) { //hashmap是无序的,所以要按照原字符串的顺序寻找 if (hashMap.get(a[i])==0) return i+1; } return 0; }
收获
HashMap的使用,hash表真的是不可以放重复元素,就是说你加入即便,他都只有这么一个键值对,但是键值中的值是可以改变的,就像上面代码中的一样相关文章推荐
- 剑指offer-5-面试35:第一个只出现一次的字符
- 【剑指offer】5.3时间效率与空间效率的平衡——面试题35:第一个只出现一次的字符
- 剑指Offer 面试题35:第一个只出现一次的字符 解题报告(华为OJ034-找出字符串中第一个只出现一次的字符)
- 剑指offer——面试题35:第一个只出现一次的字符(哈希)
- 剑指offer 35---查找第一个只出现一次的字符
- 【剑指Offer学习】【面试题35:第一个只出现一次的字符】
- 【面试题】剑指Offer-35-第一个只出现一次的字符
- 剑指offer 35 第一个只出现一次的字符
- 剑指Offer_面试题35_第一个只出现一次的字符
- 剑指offer:(35)时间效率和空间效率的平衡 :第一个只出现一次的字符
- 剑指offer-面试题35-第一个只出现一次的字符
- 剑指offer 面试题35—第一个只出现一次的字符
- 剑指Offer面试题35(java版):第一个只出现一次的字符
- 剑指Offer:面试题35 第一个只出现一次的字符
- 【剑指Offer】面试题35:第一个只出现一次的字符
- 剑指offer 面试题35 第一个只出现一次的字符(C++版)
- 【剑指offer-解题系列(35)】第一个只出现一次的字符
- 剑指offer-面试题35:第一个只出现一次的字符
- 第一个只出现一次的字符(剑指offer 35)360笔试
- 剑指Offer---面试题35:第一个只出现一次的字符