当前位置: 首页 > article >正文

Java | Leetcode Java题解之第387题字符串中的第一个唯一字符

题目:

题解:

class Solution {
    public int firstUniqChar(String s) {
        Map<Character, Integer> position = new HashMap<Character, Integer>();
        Queue<Pair> queue = new LinkedList<Pair>();
        int n = s.length();
        for (int i = 0; i < n; ++i) {
            char ch = s.charAt(i);
            if (!position.containsKey(ch)) {
                position.put(ch, i);
                queue.offer(new Pair(ch, i));
            } else {
                position.put(ch, -1);
                while (!queue.isEmpty() && position.get(queue.peek().ch) == -1) {
                    queue.poll();
                }
            }
        }
        return queue.isEmpty() ? -1 : queue.poll().pos;
    }

    class Pair {
        char ch;
        int pos;

        Pair(char ch, int pos) {
            this.ch = ch;
            this.pos = pos;
        }
    }
}

http://www.kler.cn/a/290140.html

相关文章:

  • 区块链技术在慈善捐赠中的应用
  • Prometheus面试内容整理-Prometheus 的架构和工作原理
  • 尽量通俗易懂地概述.Net U nity跨语言/跨平台相关知识
  • IEC60870-5-104 协议源码架构详细分析
  • LeetCode【0027】移除元素
  • GitLab 如何跨版本升级?
  • 计算机网络 数据链路层2
  • 网络编程学习:TCP/IP协议
  • 【安全科普】学完网络安全出去能做什么工作?
  • 【ES实战】Elasticsearch中Task的简单管理说明
  • css加载一张图片 设置整个页面背景
  • 淘宝扭蛋机小程序开发,吸引更多的消费者
  • 【嵌入式学习笔记】---- STM32里的DMA
  • 小皮面板webman ai项目本地启动教程
  • 阿里云技术深度解析与实战应用:构建高效短信验证系统
  • 9/3 链表-力扣160 、203、206
  • Redis进阶(二)--Redis高级特性和应用
  • 总线操作与定时
  • 当采用 JSON 格式的数据进行响应时,对象是否需要序列化取决于什么?
  • 9/4 链表-力扣 234、19
  • MySQL Email验证流程详解:从注册到激活!
  • Proxyless的多活流量和微服务治理
  • 重生之我们在ES顶端相遇第10 章- 分分分词器的基本使用
  • 统计学习与方法实战——K近邻算法
  • Python:解锁高效编程与数据分析的钥匙
  • 传统CV算法——边缘算子与图像金字塔算法介绍