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

【Leetcode 每日一题】2506. 统计相似字符串对的数目

问题背景

给你一个下标从 0 0 0 开始的字符串数组 w o r d s words words
如果两个字符串由相同的字符组成,则认为这两个字符串 相似

  • 例如,“abca” 和 “cba” 相似,因为它们都由字符 ‘a’、‘b’、‘c’ 组成。
  • 然而,“abacba” 和 “bcfd” 不相似,因为它们不是相同字符组成的。

请你找出满足字符串 w o r d s [ i ] words[i] words[i] w o r d s [ j ] words[j] words[j] 相似的下标对 ( i , j ) (i, j) (i,j),并返回下标对的数目,其中 0 ≤ i < j ≤ w o r d s . l e n g t h − 1 0 \le i \lt j \le words.length - 1 0i<jwords.length1

数据约束

  • 1 ≤ w o r d s . l e n g t h ≤ 100 1 \le words.length \le 100 1words.length100
  • 1 ≤ w o r d s [ i ] . l e n g t h ≤ 100 1 \le words[i].length \le 100 1words[i].length100
  • w o r d s [ i ] words[i] words[i] 仅由小写英文字母组成

解题过程

想到了字符串映射和字符串哈希,没想到用位运算来进行压缩存储。统计数量的做法,参考 好数对数目 就可以了。

具体实现

class Solution {
    public int similarPairs(String[] words) {
        Map<Integer, Integer> count = new HashMap<>();
        int res = 0;
        for (String word : words) {
            int mask = 0;
            for (char c : word.toCharArray()) {
                mask |= 1 << (c - 'a');
            }
            int cur = count.getOrDefault(mask, 0);
            res += cur;
            count.put(mask, cur + 1);
        }
        return res;
    }
}

相关文章:

  • 前端面试-JavaScript 数据类型检测全解
  • 深入理解设计模式之策略模式
  • DeepSeek写贪吃蛇手机小游戏
  • Linux-Ansible基础模块
  • ScheduledThreadPoolExecutor实现原理
  • 无人机遥控器接口作用详解!
  • 服务器独立IP对于网站的作用
  • GPU和FPGA的区别
  • ath9k(Atheros芯片)开源驱动之wifi连接
  • 基于SpringBoot的城乡商城协作系统【附源码】
  • elf_loader:一个使用Rust编写的ELF加载器
  • 【模型】GRU模型详解
  • 怎么在Github上readme文件里面怎么插入图片?
  • Oracle 连接报错:“ORA-12541:TNS:no listener ”,服务组件中找不到监听服务
  • CNewMenu::QueryContextMenu函数分析之新建菜单项的创建
  • z-score算法
  • expo应用,登录失败,页面自动刷新???----全局状态滥用导致的bug
  • sdut-C语言实验-二分查找
  • 学习笔记01——《深入理解Java虚拟机(第三版)》第二章
  • Android输入事件传递流程系统源码级解析
  • 14岁女生瞒报年龄文身后洗不掉,法院判店铺承担六成责任
  • 动物只有在被认为对人类有用时,它们的建筑才会被特别设计
  • 俄乌互相空袭、莫斯科机场关闭,外交部:当务之急是避免局势紧张升级
  • 重庆动物园大熊猫被游客扔玻璃瓶,相同地方曾被扔可乐瓶
  • 习近平在俄罗斯媒体发表署名文章
  • 川大全职引进考古学家宫本一夫,他曾任日本九州大学副校长