
力扣-771题(Java)
发布日期:2021-05-10 02:26:20
浏览次数:14
分类:精选文章
本文共 1057 字,大约阅读时间需要 3 分钟。
问题描述:
提供两个字符串,一个代表宝石(jewels),一个代表石头(stones),要求统计出在石头中可以看出宝石形态的数量。例如,如果石头中有"ABCD"石头包含"A"作为宝石,"BCA"包含"B"和"A"宝石,那么总共有多少宝石?
解决思路:
为了精确地解决这个问题,我们可以通过以下步骤来完成:
步骤一:使用哈希表记录宝石类型
首先,我们可以创建一个哈希表(或字典),用于记录我们在遍历石头过程中遇到的宝石类型。这样可以快速查找石头中包含的宝石形态。
步骤二:遍历每个石头
对于每一个石头,我们需要检查它是否包含我们哈希表中已有的任何一个宝石类型。如果有,我们增加计数器的值。
步骤三:统计所有宝石形态
对于每个石头,我们遍历其字符,检查是否有属于我们哈希表里宝石类型的字符。如果有,就记录下来,并在最后给总数量加一。
代码实现:
class Solution { public int numJewelsInStones(String jewels, String stones) { int num = 0; // 创建一个哈希表来存储遇到的宝石类型 Hashtable<Character, Integer> jewelTypes = new Hashtable<>();
// 遍历每一个宝石类型 for (char c : jewels.toCharArray()) { jewelTypes.put(c, 1); } // 遍历每一个石头 for (String stone : stones.split("")) { // 检查当前石头是否包含已在哈希表中的宝石类型 for (char c : stone.toCharArray()) { if (jewelTypes.containsKey(c)) { num++; } } } return num;}
}
解释:
这个算法首先通过遍历 "jewels" 字符串,将所有宝石类型存储在哈希表中。接着,对于每一个石头,我们检查其中的每一个字符,如果该字符存在于哈希表中,则认为这个石头包含该宝石类型,我们就增加计数器。最后,计数器的总值即为石头中可以看出宝石形态的总数量。这种方法通过使用哈希表来快速查找宝石类型,确保了算法的高效性。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月29日 01时53分58秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
对比讲解lambda表达式与传统接口函数实现方式
2019-03-06
使用java8API遍历过滤文件目录及子目录及隐藏文件
2019-03-06
精讲响应式WebClient第2篇-GET请求阻塞与非阻塞调用方法详解
2019-03-06
java9系列第二篇-资源自动关闭的语法增强
2019-03-06
CoreCLR源码探索(八) JIT的工作原理(详解篇)
2019-03-06
【数组】59. 螺旋矩阵 II
2019-03-06
【哈希表】1. 两数之和
2019-03-06
【栈和队列】232. 用栈实现队列
2019-03-06
安装Pyte失败的解决方法
2019-03-06
linux之压缩和解压
2019-03-06
搞懂ELK并不是一件特别难的事(ELK)
2019-03-06
斩荆披棘,我们走的关于程序的路
2019-03-06
操作ACCESS数据库注意事项
2019-03-06
分享在winform下实现模块化插件编程-优化版
2019-03-06
MVC模型(java)
2019-03-06
maven project 部署到tomcat时项目部署不上去
2019-03-06
[Unity][EXE]封装打包后怎么Debug错误显示output_log.txt
2019-03-06
使用promise封装wx:requset()
2019-03-06