【LeetCode:1160. 拼写单词 + 哈希表】

news/2024/10/24 18:48:23/

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 哈希表
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 1160. 拼写单词

⛲ 题目描述

给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。

假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。

注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。

返回词汇表 words 中你掌握的所有单词的 长度之和。

示例 1:

输入:words = [“cat”,“bt”,“hat”,“tree”], chars = “atach”
输出:6
解释:
可以形成字符串 “cat” 和 “hat”,所以答案是 3 + 3 = 6。
示例 2:

输入:words = [“hello”,“world”,“leetcode”], chars = “welldonehoneyr”
输出:10
解释:
可以形成字符串 “hello” 和 “world”,所以答案是 5 + 5 = 10。

提示:

1 <= words.length <= 1000
1 <= words[i].length, chars.length <= 100
所有字符串中都仅包含小写英文字母

🌟 求解思路&实现代码&运行结果


⚡ 哈希表

🥦 求解思路
  1. 对于一个单词 word,只要其中的每个字母的数量都不大于 chars 中对应的字母的数量,那么就可以用 chars 中的字母拼写出 word。
  2. 我们只需要用一个哈希表存储 chars 中每个字母的数量,再用一个哈希表存储 word 中每个字母的数量,最后将这两个哈希表的键值对逐一进行比较即可。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
java">class Solution {public int countCharacters(String[] words, String chars) {Map<Character, Integer> charsCnt = new HashMap<Character, Integer>();int length = chars.length();for (int i = 0; i < length; ++i) {char c = chars.charAt(i);charsCnt.put(c, charsCnt.getOrDefault(c, 0) + 1);}int ans = 0;for (String word : words) {Map<Character, Integer> wordCnt = new HashMap<Character, Integer>();int wordLength = word.length();for (int i = 0; i < wordLength; ++i) {char c = word.charAt(i);wordCnt.put(c, wordCnt.getOrDefault(c, 0) + 1);}boolean isAns = true;for (int i = 0; i < wordLength; ++i) {char c = word.charAt(i);if (charsCnt.getOrDefault(c, 0) < wordCnt.getOrDefault(c, 0)) {isAns = false;break;}}if (isAns) {ans += word.length();}}return ans;}
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/1541641.html

相关文章

记录一次局域网内文件共享

#局域网内文件共享 局域网内文件共享 一.背景介绍 需求&#xff1a;在安全需求背景下&#xff0c;实现局域网内文件访问与修改 &#xff08;即&#xff1a;禁止wx,qq,云server等传输&#xff09; 作者的实验条件&#xff1a; win11主机&#xff0c;win10虚拟机 二.实验过程…

linux网桥两个物理网

1、实验目的 将一台Linux主机配置为网桥,将两台在不同网络,ip地址却在同一网段的设备连接起来。 主机 en33 ens37 A 192.168.10.10 - B 192.168.10.11 - Bridge 无地址 无地址 准备3台虚拟机,主机A配置一块网卡,主机B配置一块网卡,主机Bridge配置2块网卡 主机A在vmnet2网…

2024项目管理软件,不融入敏捷开发怎么行?

一、项目管理软件的重要性 在当今快节奏的商业环境中&#xff0c;项目管理软件的重要性愈发凸显。随着市场竞争的不断加剧&#xff0c;企业面临着越来越多的挑战&#xff0c;项目的复杂性和不确定性也在不断增加。在这样的背景下&#xff0c;项目管理软件成为了团队高效规划、…

基于SSM的网上拍卖平台

文未可获取一份本项目的java源码和数据库参考。 1. 选题背景 网络在人们的日常生活所占的比重越来越重&#xff0c;人们对网络信息的依赖性也越来越高。为用户提供良好的网络服务&#xff0c;可以给用户带来便捷的同时&#xff0c;也为网络服务开发商带来了客观的收益。当前&…

HTTP 与 HTTPS 的区别:原理、安全性与应用场景

一、引言 在互联网的世界里&#xff0c;信息的传输离不开协议的支持。HTTP 和 HTTPS 是我们在浏览网页、使用网络应用等场景中经常接触到的协议。随着网络安全意识的不断提高&#xff0c;了解 HTTP 和 HTTPS 的区别对于保障网络通信安全和理解网络应用的运行机制变得至关重要。…

【Linux系统】缺页中断机制

缺页中断是操作系统在访问虚拟内存时的一种机制&#xff0c;主要用于处理页面不在物理内存中的情况。系统处理缺页中断时&#xff0c;通常可以分为以下几种情况&#xff1a; 页面未被加载: 当进程访问的页面不在物理内存中时&#xff0c;会触发缺页中断。操作系统需要找到该页…

【python实现扑克牌小游戏】python使用权重排序扑克牌

文章目录 一、如何洗牌思路洗牌方法的所有代码 二、如何排序扑克牌思路排序方法的所有代码 三、如何叫地主思路叫地主的所有代码 四、全部代码 一、如何洗牌 思路 1、准备一副有序的牌&#xff08;使用list来实现&#xff09; 2、遍历这个list&#xff0c;并将遍历到的元素放…

MacOS RocketMQ安装

MacOS RocketMQ安装 文章目录 MacOS RocketMQ安装一、下载二、安装修改JVM参数启动关闭测试关闭测试测试收发消息运行自带的生产者测试类运行自带的消费者测试类参考博客&#xff1a;https://blog.csdn.net/zhiyikeji/article/details/140911649 一、下载 打开官网&#xff0c;…