【每日一题Day366】LC2103环和杆 | 状态压缩

简介: 【每日一题Day366】LC2103环和杆 | 状态压缩

环和杆【LC2103】

总计有 n 个环,环的颜色可以是红、绿、蓝中的一种。这些环分别穿在 10 根编号为 09 的杆上。

给你一个长度为 2n字符串rings ,表示这 n 个环在杆上的分布。rings 中每两个字符形成一个 颜色位置对 ,用于描述每个环:

  • i 对中的 第一个 字符表示第 i 个环的 颜色'R''G''B')。
  • i 对中的 第二个 字符表示第 i 个环的 位置,也就是位于哪根杆上('0''9')。

例如,"R3G2B1" 表示:共有 n == 3 个环,红色的环在编号为 3 的杆上,绿色的环在编号为 2 的杆上,蓝色的环在编号为 1 的杆上。

找出所有集齐 全部三种颜色 环的杆,并返回这种杆的数量。

  • 思路
    使用状态压缩记录每个杆子的环颜色信息,如果有用三种颜色那么状态值为7;最后计数返回结果

class Solution {
    public int countPoints(String rings) {
        int[] mask = new int[10];
        Map<Character, Integer> map = new HashMap<>();
        map.put('R', 1);
        map.put('G', 2);
        map.put('B', 4);
        for (int i = 0; i < rings.length(); i += 2){
            int val = map.get(rings.charAt(i));
            int index = rings.charAt(i + 1) - '0';
            mask[index] |= val;
        }
        int res = 0;
        for (int i = 0; i < 10; i++){
            if (mask[i] == 7){
                res++;
            }
        }
        return res;
    }
}

image.png

目录
相关文章
|
JavaScript Linux 数据安全/隐私保护
node内网安装npm私服以及依赖包上传发布verdaccio
node内网安装npm私服以及依赖包上传发布verdaccio
998 1
|
算法
算法刷题-数组
算法刷题-数组
125 0
算法刷题-数组
|
Java 测试技术 Maven
Maven打包使用多线程加速构建过程
Maven打包使用多线程加速构建过程
2118 0
量化交易一键跟单交易平台开发合约源码定制详情
target_position = self.broker.get_position(&#39;BTC&#39;) + order.amount self.broker.place_order(&#39;BTC&#39;, order.amount) self.settings[&#39;target_position&#39;] = target_position
|
Shell Linux API
C/C++进程超详细详解【上部分】(系统性学习day06)
C/C++进程超详细详解【上部分】(系统性学习day06)
|
机器学习/深度学习 传感器 算法
目标检测+车道线识别+追踪+测距(代码+部署运行)
目标检测+车道线识别+追踪+测距(代码+部署运行)
|
运维 Kubernetes Cloud Native
|
Java 关系型数据库 MySQL
JSP健身房管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 健身房管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
141 0
|
Web App开发 分布式计算 资源调度
大数据开发之Hadoop 伪分布式安装(4)【完结】
你好看官,里面请!今天笔者讲的是大数据开发之Hadoop 伪分布式安装(4)。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
242 1
大数据开发之Hadoop 伪分布式安装(4)【完结】
|
前端开发 Java
Java私活300元,完成JavaWeb志愿者管理系统(四)
创建一个并点击勾选志愿者管理系统后台的各种属性,代码生成器勾选增删改查等条件,然后自动生成即可。
313 0
Java私活300元,完成JavaWeb志愿者管理系统(四)