zoukankan      html  css  js  c++  java
  • [编程题]第一个只出现一次的字符

    剑指 Offer 50. 第一个只出现一次的字符

    题目要求

    ​ 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。

    我的思考

    ​ 使用无序的哈希表(HashMap)和有序的哈希表(LinkedHashMap)都能解决此问题,但是,我们还是使用无序的哈希表会更方便一些。

    思路:

    ​ 把字符串变量装入有序的哈希表,键为单个字符,value为出现的次数。

    ​ 装在完成后只需要遍历这个有序哈希表,第一次出现的且为1次的字符就是我们要的(因为是有序的哈希表,装入的顺序和我们字符串的原始顺序相同的)

    我的代码

    package jianzhioffer;
    
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.Map;
    
    /**
     * @author jiyongjia
     * @create 2020/6/25 - 13:57
     * @descp: 使用有序的LinkedHashMap解决
     */
    public class P12_fisrtApperStr {
        
        public  char firstUniqChar(String s) {
            LinkedHashMap<Character,Integer> linkedHashMap = new LinkedHashMap<Character,Integer>();
            //1 把字符串按照key为字符,value为次数装入有序的hashMap
            char[] chars = s.toCharArray();
            for (char aChar : chars) {
                boolean b = linkedHashMap.containsKey(aChar);
                if (!b){
                    linkedHashMap.put(aChar,1);
                }else {
                    Integer integer = linkedHashMap.get(aChar);
                    integer++;
                    linkedHashMap.put(aChar,integer);
                }
            }
    
            //2 直接从LinkedHashMap中拿到第一个value为1 的字符即可。
            Iterator<Map.Entry<Character, Integer>> iterator = linkedHashMap.entrySet().iterator();
            while (iterator.hasNext()){
                Map.Entry<Character, Integer> entry = iterator.next();
                if (entry.getValue()==1){
                    return entry.getKey();
                }else {
                    continue;
                }
            }
    
            //3 走出while循环,没返回的话,就返回未找到
            return ' ';
        }
    }
    
    
  • 相关阅读:
    [转]PYTHON-SCRAPY-WINDOWS下的安装笔记
    [转]Scrapy入门教程
    [转]Centos 6.5 安装 Scrapy 0.22.2成功
    Python的三个常用内置函数
    sublime连接Python的使用
    tornado-options(3)
    配置 PPP 封装和认证
    交换机验证 PVST 实验
    vlan间通信配置vtp模式
    convert expdp dmp file to SQL DDL statements
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13191804.html
Copyright © 2011-2022 走看看