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

力扣每日一题 2306.公司命名

做题过程中使用到的java语法:

1.从一个字符串中取出一部分字符串:

String str = "Hello, World!";  
String part = str.substring(7); // 从索引7开始到字符串末尾  
System.out.println(part); // 输出: World!

class Solution {

    public long distinctNames(String[] ideas) {

        Map<Character, Set<String>> names = new HashMap<Character, Set<String>>();

        //首先建立了一个双列集合

        for (String idea : ideas) {

            names.putIfAbsent(idea.charAt(0), new HashSet<String>());

            //putIfAbsent是map接口中的一个方法,如果指定的键尚未与某个值相关联

            //则将其与给定的值相关联

            //段代码的目的是确保names这个Map中,以idea字符串的第一个字符为键的映射存在

            //且其值是一个新的HashSet<String>实例(如果之前不存在这样的映射)。

            names.get(idea.charAt(0)).add(idea.substring(1));

        }

        long ans = 0;

        for (Map.Entry<Character, Set<String>> entryA : names.entrySet()) {

            char preA = entryA.getKey();

            Set<String> setA = entryA.getValue();

            for (Map.Entry<Character, Set<String>> entryB : names.entrySet()) {

                char preB = entryB.getKey();

                Set<String> setB = entryB.getValue();

                if (preA == preB) {

                    continue;

                }

                int intersect = getIntersectSize(setA, setB);

                //getIntersectSize方法的目的是计算并返回这两个集合的交集的大小

                //即这两个集合中共有的元素的数量。

                ans += (long) (setA.size() - intersect) * (setB.size() - intersect);

            }

        }

        return ans;

    }

    public int getIntersectSize(Set<String> a, Set<String> b) {

        int ans = 0;

        for (String s : a) {

            if (b.contains(s)) {

                ans++;

            }

        }

        return ans;

    }

}


 

//想想可以边做循环边判断吗?

//如果两个候选名字拥有同样的首字母

//那么他们一定无法得到有效的公司名字

//如果两个候选名字拥有不同的首字母,那么他们可能得到有效的公司名字

//假设现在一共有如下几个单词:

//Aa Ab Ac Ba Bb Bc

//names[preA]=Aa Ab Ac Ad Af

//names[preB]=Ba Bb Bc Bx Br

//

 

相关文章:

力扣每日一题 2306.公司命名

做题过程中使用到的java语法&#xff1a; 1.从一个字符串中取出一部分字符串&#xff1a; String str "Hello, World!"; String part str.substring(7); // 从索引7开始到字符串末尾 System.out.println(part); // 输出: World! class Solution { public lo…...

HTML-DOM模型

1.DOM模型 window对象下的document对象就是DOM模型。 DOM描绘了一个层次化的节点树&#xff0c;每一个节点就是一个html标签&#xff0c;而且每一个节点也是一个DOM对象。 2.操作DOM 2.1.获取DOM对象常用方法 获取DOM对象的常用方法有如下几种&#xff1a; getElementById(…...

vue项目报错: At least one is required in a single file component.的主要原因及解决办法

本篇文章主要讲解 vue项目报错&#xff1a; At least one is required in a single file component.的主要原因及解决办法 作者&#xff1a;任聪聪 日期&#xff1a;2024年9月25日 报文信息&#xff1a; Compiled with problems: ERROR in ./src/xxxx.vue Module Error (from …...

03DSP学习-利用syscfg配置IO

上一篇博客介绍了syscfg&#xff0c;对syscfg有了初步的了解&#xff0c;但是在真正使用上它之前&#xff0c;还不能理解他是一个神器。 (在写博客的时候&#xff0c;我是在从头到尾重新完成这个步骤&#xff0c;希望对初学者有点帮助) 找到Board Component 打开syscfg文件&…...

web - RequestResponse

##Request&Response 1&#xff0c;Request和Response的概述 Request是请求对象&#xff0c;Response是响应对象。这两个对象在我们使用Servlet的时候有看到&#xff1a; 此时&#xff0c;我们就需要思考一个问题request和response这两个参数的作用是什么? request:获取请…...

个人文章汇总

文章模块文章汇总心得&资料 真正优秀的人&#xff0c;更懂得尊重别人 如何用沟通解决80%的工作问题 一个IT青年北漂四年的感悟 史上最污技术解读 操作系统相关 操作系统基础 操作系统&#xff1a;从工厂的角度来理解进程线程操作系统&#xff1a;详述对进程和线程的认识操作…...

Java | Leetcode Java题解之第436题寻找右区间

题目&#xff1a; 题解&#xff1a; class Solution {public int[] findRightInterval(int[][] intervals) {int n intervals.length;int[][] startIntervals new int[n][2];int[][] endIntervals new int[n][2];for (int i 0; i < n; i) {startIntervals[i][0] inter…...

大模型智能体在金融公告理解领域的应用 | OPENAIGC开发者大赛高校组AI创新之星奖

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…...

链表入门(LeetCode题目)

来源&#xff1a;左程云算法 链表的题目我们经常是有思路但是实现起来总有些小问题&#xff0c;所以是准备笔试应多加练习的一类题 206. 反转链表 这道题我们可以新开链表来存&#xff0c;但是如果面试中有这道题&#xff0c;面试官让你优化又该如何呢&#xff1f;所以我们采…...

kibana开启访问登录认证

编辑es配置文件&#xff0c;添加以下内容开启es认证 vim /etc/elasticsearch/elasticsearch.yml http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization xpack.security.enabled: true xpack.security.transport.ssl.enable…...

Java 14Java 15新特性概述

一、Java 14 发布于2020年3月17日。Java 14主要新特性如下&#xff1a; JEP 305&#xff1a;Pattern Matching for instanceof (Preview)instanceof 的模式匹配&#xff08;预览&#xff09; JEP 358&#xff1a;Helpful NullPointerExceptions 有用的 NullPointerExceptions…...

流量特征随机ua修改

作为一个蓝队吗喽&#xff0c;总是能看见因为ua头特征而直接被拦截的ip,当然了还有些是通过X-Forwarded-For被拦截的(X-Forwarded-For:fofa.info&#xff0c;不拦你才怪)&#xff0c; 主要是通过python的mitmproxy和fake_useragent两个模块进行实现&#xff0c;代码量极低 fr…...

CSP-S 2024 提高级 第一轮(初赛) 阅读程序(3)

【题目】 CSP-S 2024 提高级 第一轮&#xff08;初赛&#xff09; 阅读程序&#xff08;3&#xff09; 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 const int maxn 1000000 5; 7 const int P1 998…...

如何在 Rust 中通过 Rumqttc 实现 MQTT 通信

Rust 简介 Rust 是一门系统级编程语言&#xff0c;以其卓越的性能、并发能力以及内存安全特性著称。Rust 由 Mozilla 推出&#xff0c;目标是在现代软件开发中提供一种安全高效的编程语言。其设计旨在提供安全、并发和高效的编程体验&#xff0c;同时保持开发效率和代码质量不…...

广东高校建设AIGC实验室时需要注意哪几个关键点?

随着人工智能技术的飞速发展&#xff0c;特别是生成式人工智能&#xff08;AIGC&#xff09;在各行各业中的广泛应用&#xff0c;它已经成为推动新一轮科技革命和产业变革的关键力量。教育部等相关部门近年来也高度重视人工智能领域的人才培养工作&#xff0c;强调要加快推动高…...

设计模式-PIMPL 模式

PIMPL&#xff08;Pointer to IMPLementation&#xff09;&#xff0c;又称Opaque Pointer模式或编译防火墙&#xff0c;是一种在C中广泛应用的编程技术。其核心思想是将类的实现细节从公共接口中分离出来&#xff0c;通过指向实现类的指针来访问类的具体功能。这种模式在提高代…...

Docker部署MongoDB教程

嘿&#xff0c;大家好&#xff01;今天我在三丰云免费服务器上进行了一次激动人心的MongoDB部署测试。这款免费云服务器1核CPU、1G内存、10G硬盘、5M带宽&#xff0c;是不错的免费服务器选择。 首先&#xff0c;让我们简要介绍一下使用到的Docker和MongoDB软件。Docker是一个开…...

堆排序易错点

1.建堆和调整堆&#xff08;插入和删除&#xff09; 建堆和调整堆的过程是不一样的&#xff1a; 建堆 从非终端节点编号的结点开始依次建立大根堆&#xff0c;例如: 拿第2个图说&#xff0c;首先比较-1&#xff0c;7&#xff0c;从中选一个小的&#xff0c;即“-1”&#xf…...

安卓13长按电源按键直接关机 andriod13不显示关机对话框直接关机

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 有些设备需要在长按电源键的时候,直接关机。不需要弹出对话框进行询问。 2.问题分析 过滤电源按键,需要在系统里面处理的话,那么我们需要熟悉android的事件分发,然后再…...

React学习笔记(四)——React 组件生命周期

目录 1. 生命周期-概览 2. 生命周期-挂载阶段 3. 生命周期-更新阶段 4. 生命周期-卸载阶段 5. setState扩展-发现问题 6. setState扩展-更多用法 7. setState扩展-异步 1. 生命周期-概览 了解react类组件生命周期整体情况 大致步骤&#xff1a; 什么是生命周期React类组…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...