LeetCode 6094. 公司命名

438 篇文章 1 订阅
订阅专栏

6094. 公司命名

 

【集合】按照首字母来统计后半部分字符串的集合,如果两个集合之间的元素可以互换首字母,那么需要满足A集合中的没有在B中出现过,那么A集合中的元素才能换成B集合开头的字母,所以两个集合分别求补集,然后个数相乘即可,举个🌰:

假设统计完之后:

a: bb cc dd  

b: cc ee ff

显然我们发现cc在B集合中出现过了,也就是说原本以a开头的cc不能换成以b开头的cc了,所以a中可以替换成b开头的元素只有bb、dd,同理,B集合中可以替换成a开头的字符只有cc和ff,这样形成的组合共计2*2个

class Solution {
    
    // set 2:32 30
    
    public long distinctNames(String[] ideas) {
        long ans = 0;
        Map<Integer, Set<String>> map = new HashMap();
        for(var str: ideas){
            var st = str.substring(1, str.length());
            int c = str.charAt(0) - 'a';
            if(map.containsKey(c)) map.get(c).add(st);
            else {
                Set<String> set = new HashSet();
                set.add(st);
                map.put(c, set);
            }
        }
        for(var i = 0; i < 26; i++){
            if(map.containsKey(i)){
                Set<String> a = new HashSet(map.get(i));
                for(var j = i + 1; j < 26; j++){
                    if(map.containsKey(j)){
                        Set<String> b = new HashSet(map.get(j));
                        Set<String> d = new HashSet(a);
                        d.removeAll(b);
                        b.removeAll(a);
                        ans += (long)d.size() * b.size() * 2;
                    }
                }
            }
        }
        return ans;
    }
}

【预处理】直接通过哈希表来计算a开头的字符串替换成另外a-z开头的字符串共有多少个不在原来的字符串集合中。即建立一个26*26的二维数组记录以i开头的所有字符串替换成以j开头后不重复的有多少个。

class Solution {

    // 3:35 15

    public long distinctNames(String[] ideas) {
        Set<String> set = new HashSet(){{
            for(var x: ideas) add(x);
        }};
        int[][] arr = new int[26][26];
        for(var x: ideas){
            int i = x.charAt(0) - 'a';
            var str = x.substring(1, x.length());
            for(var j = 0; j < 26; j++){
                var c = (char)(j + 'a'); 
                if(!set.contains(c + str)){
                    arr[i][j]++;
                }
            } 
        }
        long ans = 0;
        for(var i = 0; i < 26; i++){
            for(var j = 0; j < 26; j++){
                ans += arr[i][j] * arr[j][i];
            }
        }
        return ans;
    }
}

 

 

必须刷leetcode吗-.leetcode:Leetcode记录
06-30
为了避免自动检查语法错误的功能到处报错,往往在开头加上include了用到的库文件,添加命名空间。 其他 欢迎讨论~ 我的邮箱: 进度展示 题号 题目 时间 备注 1 Two Sum 20190920 2 Add Two Numbers 20190921 3 ...
leetcode中文版-zhizi-algs:我的leetcode.com和nowcoder.com解决方案
06-29
(题目的序号)命名, 在方法中初始化算法数据、调用算法. 我的牛客网账号为 . 我的 LeetCode 账号为 . 题目组成 包括剑指Offer、、部分笔试中遇到的算法题 剑指Offer 资源 书籍资源可在本项目根目录中找到, 也可以直接...
Leetcode 6094公司命名
hljjaaa的博客
06-13 65
Leetcode 6094公司命名
leetcode6094. 公司命名【分组枚举 + 不能重复用set交集 + product笛卡儿积(repeat表示长度)】
小楼一夜听春雨
06-12 869
首先以第一个字母为key,后面的字母为value(搞一个set出来存一下) 然后不同的首字母分为不同组 然后通过product笛卡尔积,考虑不同组,只考虑选出的第一个字母小于第二个字母的情况(相反的情况会*2处理,相同不符合) 然后这两组有两个set,如果set中有相同的,那这个值显然时不能取得,否则就会交换后得到在另一个set中 因此此时两个组得贡献就是(len(s1) - len(s1 & s2)) * (len(s2) - len(s1 & s2)) * 2 注意py中的set是无序hashtable
力扣C语言(150.14)7.14
m0_65280246的博客
07-15 534
150.逆波兰表达式 最先想到肯定是栈,我原先想用循环迭代,发现如果前面连续的数字较多(超过2个),迭代的变量就更新不了了,导致前面的数也没了。 所以还是得用栈保存每个数。 要用atoi函数正负数由字符串转化过来。 除法考虑负数如何保留整数部分,我用了floor函数,不过没用也能通过。 另外不能以字符串第一个字符判断是5种字符串,因为负数和减都是以‘-’开头。 以整个字符串为判断依据,之前要用strcmp判断是否符合。 特殊情况,一个数,直接返回。 14.最长公共前缀 看起来很简单.
Python描述 LeetCode 6094. 公司命名
亓官劼的博客
06-12 430
给你一个字符串数组 表示在公司命名过程中使用的名字列表。公司命名流程如下:返回 不同 且有效的公司名字的数目。示例 1: 示例 2: 提示:
0哈希困难 LeetCode6094. 公司命名
31楼下小黑的博客
06-13 55
z
LeetCode 6094. 公司命名(分组+哈希)
xylitolz的博客
06-12 289
LeetCode 6094. 公司命名(分组+哈希)
6094.公司命名 哈希
yu_duan_hun的博客
06-12 122
6094.公司命名 哈希
icode:LeetCode公司测试(Ali,Google等)等
03-25
对于leetcode文件夹下的命名规则 .hpp文件是带有问题名称的名称,其空格由'_'代替。 而且,并且您的用户名被添加到文件名的末尾 如: For the question "1. Two Sum" The .hpp file is: "1_Two_Sum_username.hpp" ....
leetcode1004-leetcode:Leet代码300+!Leetcode网址是https://leetcode-cn.com
07-01
本项目文件命名格式为:题号_题目名_难度(难度=1,2,3) 简单的: 中等的: 难的: 中等的: 简单的: 中等的: 简单的: 中等的: 简单的: 中等的: 中等的: 简单的: 中等的: 简单的: 中等的: 简单的: 中等...
leetcodepython001-leetcode:在https://leetcode-cn.com的刷题记录
07-01
leetcode Python 001 | 描述 这个 Repository 是 的代码,命名规则如下: AAAA_BBB_CCC.DD AAAA是难度[简单,中等,困难] BBB 是序列号[001, 002, 003...] CCC 是名称 DD是后缀[py, c, java...] 导航 # 标题 困难 ...
Golang | Leetcode Golang题解之第149题直线上最多的点数
weixin_66442839的博客
06-14 446
Golang | Leetcode Golang题解之第149题直线上最多的点数
力扣LCP 08.剧情触发时间
Pisasama的博客
06-12 452
【代码】力扣LCP 08.剧情触发时间。
Java | Leetcode Java题解之第149题直线上最多的点数
m0_57195758的博客
06-14 351
Java | Leetcode Java题解之第149题直线上最多的点数
链表经典题目:环形链表问题(LeetCode141.环形链表、LeetCode142.环形链表Ⅱ)
最新发布
iiiiiankor的博客
06-15 1109
🌟🌟🌟环形链表问题在面试中是经常爱考的,你有没有发现环形链表的题目代码都没有很难,一般是思路难以想到,所以人家考你的是思路,并不真的会纠你代码写的怎么样!快指针必须一次走2步吗?可以一次走3步,走4步可以吗?你会怎么回答?怎么证明快指针一次走2步一定可以追上?这里我们简单证明一下:➡️快指针一次走2步那么一定可以追得上首先需要知道,fast什么时候开始追击slow因为fast首先进入环,在slow进环之前,二者的运动路径并不一样!只有当slow也开始进环,才开始所谓的追及问题。
LeetCode | 28.找出字符串中第一个匹配项的下标 KMP
编程菜鸟的学习记录
06-14 356
LeetCode | 28.找出字符串中第一个匹配项的下标 KMP
Python | Leetcode Python题解之第149题直线上最多的点数
Mopes__的博客
06-14 536
Python | Leetcode Python题解之第149题直线上最多的点数
leetcode 204.计数质数 python
09-06
你可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来解决LeetCode 204题,计数质数问题。下面是使用Python的实现示例代码: ```python class Solution: def countPrimes(self, n: int) -> int: if n return...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • LeetCode 1109. 航班预订统计 8821
  • LeetCode 1037. 有效的回旋镖 8821
  • LeetCode 440. 字典序的第K小数字 8803
  • LeetCode 307. 区域和检索 - 数组可修改 8799
  • LeetCode 732. 我的日程安排表 III 8757

分类专栏

  • LeetCode 438篇
  • AcWing 19篇
  • 剑指offer 42篇
  • 蓝桥杯 4篇
  • LCS 3篇
  • LIS 8篇
  • 模板 2篇
  • 洛谷 3篇
  • Java 1篇
  • CSP认证 16篇

最新评论

  • LeetCode 1855. 下标对中的最大距离

    Sasakihaise_: 点一下代码框下面的小箭头,展开就可以看了呀~

  • LeetCode 1855. 下标对中的最大距离

    Lucky Girl949: 有完整代码嘛

  • LeetCode 622. 设计循环队列

    Sasakihaise_: 好滴

  • LeetCode 622. 设计循环队列

    不断学习呦: 博主写得真不错,有些不懂的地方,可以加个维新详细交流一下吗

  • LeetCode 532. 数组中的 k-diff 数对

    CSDN-Ada助手: 邀请你参加 算法 技能树有奖评测征文,希望你的建议可以促进我们不断优化,活动地址:https://bbs.csdn.net/topics/606838471?utm_source=AI_activity_algorithm

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • LeetCode 2437. 有效时间的数目
  • LeetCode 337. 打家劫舍 III
  • LeetCode 213. 打家劫舍 II
2023年103篇
2022年393篇
2021年28篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网立字怎么起名森女头像僵尸少爷起名器郭德纲于谦相声下载高氏男孩起名音频截取软件网上起名安全吗网游之少年绝色猫起什么名字穿普拉达的女王下载赤之沙尘晓之护卫3攻略起名成语大全185号段归来仍是少年的上一句吴字起名昆明起名字哪里起得好开店起起什么名字supervision中国取名起名大全网免费取名演员乔乔新生婴儿起名测字打分孩子起名 的五行用兴字起男孩名字缉魂电影解析核舟记翻译及原文韩国女装店铺起名大全党风廉政建设责任书起名神奇淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化