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

DAY 33 leetcode 383--哈希表.赎金信 49--字母异位词分组

题号383

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

class Solution {
    public boolean canConstruct(String r, String m) {
        HashMap<Character, Integer> dic=new HashMap<>();//创建哈希表
        int r_size=r.length();
        int m_size=m.length();
        for(int i=0;i<m_size;i++){
            dic.put(m.charAt(i),dic.getOrDefault(m.charAt(i),0)+1);
        }//先对m操作
        for(int i=0;i<r_size;i++){
            dic.put(r.charAt(i),dic.getOrDefault(r.charAt(i),0)-1);
        }//再将r中的元素减去
        for(int val:dic.values()){
            if(val<0)//若有负数出现则说明出现了其他字符
            return false;
        }
        return true;
    }
}

题号49

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

我的写法

大致思路:创建一个哈希表,key是计数数组生成的字符串,values是strs[i],则可以将计数数组相同的字符串放在同一列表下,但是这种方法时间复杂度高

import java.util.*;

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        int n = strs.length;
        HashMap<String, List<String>> map = new HashMap<>();
        for (int i = 0; i < n; i++) {
            // 不能直接用数组作为键,使用计数数组生成的字符串作为键
            String key = Arrays.toString(count(strs[i]));
            List <String> list=map.getOrDefault(key,new ArrayList<String>());
            //如果存在key 则返回与该键关联的 List<String>
            //如果不存在,则返回一个新的 ArrayList<String> 实例
            list.add(strs[i]);
            map.put(key,list);
        }
        // 返回包含所有列表的列表
        return new ArrayList<List<String>>(map.values());
    }

    public int[] count(String s) {
        int[] arr = new int[26];
        int size = s.length();
        for (int i = 0; i < size; i++) {
            arr[s.charAt(i) - 'a']++;
        }
        return arr;
    }
}

相关文章:

  • 如何本地部署RWKV-Runner尝鲜CPU版
  • odrive环境构筑问题
  • R语言绘图 | 使用scplotter包绘制细胞间通信图
  • 【超详细】一文解决更新澎湃2.0后LSPose失效问题
  • STM32 FATFS - 在flash上运行fatfs
  • 文章记单词 | 第15篇(六级)
  • Java笔记2——编程基础
  • 高效内存位操作:如何用C++实现数据块交换的性能飞跃?
  • STM32技能综合巩固
  • 使用 Vue 重构 RAGFlow 实现聊天功能
  • 第十二届蓝桥杯省赛软件类(cc++组)
  • 一场国际安全厂商的交流会议简记
  • 移动端浏览器调用摄像头失败,需要https,配置开发环境证书
  • 尚硅谷2019版Java异常处理篇笔记记录
  • Ranger一分钟
  • 步进电机控制频率解析:500 Hz 还是 500×256 Hz?
  • 基于大模型的房间隔缺损手术全流程预测与方案优化研究报告
  • 【56】数组指针:指针穿梭数组间
  • Python数据类型-list
  • 传统汽车 HMI 设计 VS 新能源汽车 HMI 设计,有何不同?
  • “80后”湖南岳阳临湘市市长刘琦任临湘市委书记
  • 人民日报任平:从“地瓜经济”理论到民营经济促进法,读懂中国经济的成长壮大之道
  • 让中小学生体验不同职业,上海中高职院校提供超5万个体验名额
  • 马上评|劳动课该如何找回“存在感”
  • 新华社千笔楼:地方文旅宣传应走出“魔性尬舞”的流量焦虑
  • 聘期三年已至:37岁香港青年叶家麟卸任三亚市旅游发展局局长