原文链接:771. 宝石与石头 - 力扣(LeetCode)


题目

给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

字母区分大小写,因此 "a" 和 "A" 是不同类型的石头。

示例 1:

输入:jewels = "aA", stones = "aAAbbbb"
输出:3

示例 2:

输入:jewels = "z", stones = "ZZ"
输出:0

提示:

1 <= jewels.length, stones.length <= 50
jewels 和 stones 仅由英文字母组成
jewels 中的所有字符都是 唯一的

题解

方法一:

解题思路:用set存放宝石,遍历石头中的元素,查看set中是否存在

时间:1ms 空间:40.1MB

class Solution {public int numJewelsInStones(String jewels, String stones) {//定义一个set集合,用于存放宝石的种类HashSet<Character> jewel = new HashSet<>();int res=0;//定义结果//循环将宝石放入集合for(int i=0;i<jewels.length();i++){jewel.add(jewels.charAt(i));    }//遍历石头,如果找到存在集合中的宝石,则结果+1for(int j=0;j<stones.length();j++){if(jewel.contains(stones.charAt(j)))res++;}return res;}
}

方法二:

解题思路:用数组记录拥有的宝石,然后遍历stone

时间:0ms 空间:40MB

class Solution {public int numJewelsInStones(String jewels, String stones) {//定义一个正数数组,记录存在的宝石种类int[] ans = new int[58];for(int i=0;i<jewels.length();i++){//每一个位置对应一个宝石,存在时将该位置设置为1ans[jewels.charAt(i)-'A']=1;}//当前情况,宝石位置都为1,其余位置都为0int res = 0;for(int j=0;j<stones.length();j++){//判断石头中的元素存在于宝石数组中,则+1,否则+0res+=ans[stones.charAt(j)-'A'];}return res;}
}

方法三:

解题思路:双重循环

时间:0ms 空间:39.7MB

class Solution {public int numJewelsInStones(String jewels, String stones) {int res = 0;for (int i = 0; i < stones.length(); i++) {char stone = stones.charAt(i);for (int j = 0; j < jewels.length(); j++) {char jewel = jewels.charAt(j);if (stone == jewel) {res++;break;}}}return res;}
}

Leetcode771:宝石与石头相关推荐

  1. leetcode771. 宝石与石头

    给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. J 中的字母不重复,J 和 S中的所有字符都是字母 ...

  2. leetcode771. 宝石与石头 py永远的神!

    给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数. 示例 1: 输入:nums = [12,345,2,6,7896] 输出:2 解释: 12 是 2 位数字(位数为偶数)  345 ...

  3. 宝石与石头(简单难度)

    目录 题目概述(简单难度) 思路与代码 思路展现 代码示例 总结 题目概述(简单难度) 题目链接: 宝石与石头 思路与代码 思路展现 将jewels字符串转换为字符后存入到set集合当中,然后将sto ...

  4. LeetCode 题库 全 JAVA 解题---771.宝石与石头

    LeetCode 题库 全 JAVA 解题 771.宝石与石头 原题回顾: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥 ...

  5. 771. 宝石与石头

    给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. J 中的字母不重复,J 和 S中的所有字符都是字母 ...

  6. 3600、宝石与石头

    给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头. stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. 字母区 ...

  7. 【leetcode】771. 宝石与石头 (简单)

    [leetcode]771. 宝石与石头 给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头. stones 中每个字符代表了一种你拥有的石头的类型,你 ...

  8. 【Swift】LeedCode 宝石与石头

    [Swift]LeedCode 宝石与石头 由于各大平台的算法题的解法很少有Swift的版本,小编这边将会出个专辑为手撕LeetCode算法题. 给你一个字符串 jewels 代表石头中宝石的类型,另 ...

  9. java练习题:宝石和石头(map)

    //宝石和石头 : J代表宝石的种类,不可以重复,例如J=aA,则宝石种类有a,A两种,S代表已拥有的石头个数,如S=aAAkk,则拥有的宝石有a,A,A三个 import java.util.*; ...

最新文章

  1. 《Arduino实战》——第1章 你好Arduino
  2. 构建高性能J2EE应用的五种核心策略
  3. atcode062D(预处理&优先队列)
  4. js+css立体旋转
  5. android java 实体类 object变量 保存_Android中Intent传递对象的两种方法Serializable,Parcelable...
  6. python 日志模块 日志格式
  7. c语言由n个斐波纳函数,6、C语言 —— 字符串
  8. 软件设计师12-数据库(数据操作)
  9. list(链表)容器
  10. GIMP 教程:如何在 GIMP 中创建曲线文本
  11. QT基础之QT5.12下载与安装
  12. 接口测试加密解密以及接口签名sign原理
  13. 软件技巧:优蛋开启出现Failed to set data for错误
  14. c语言中.cpp英文全称,.cpp与.c的区别
  15. 项目启动成功,但是Eureka页面不显示
  16. 后端返回数据中的换行符,在标签中不显示换行的解决方法
  17. 关于CStdioFile
  18. 拨乱反正!关于LoRaWAN的7个常见误解
  19. ArcGIS平台概述
  20. Kotlin使用泛型搭建一个MVP最简单实例

热门文章

  1. 结构静力分析与动力学分析_51CAE_新浪博客
  2. java 字节单位换算_【java虚拟机】内存使用单位换算
  3. 网站被百度网址安全中心 警告 该怎么取消拦截提示
  4. 360网站卫士cdn全面转向奇安信
  5. java 读取二进制文件_用Java读取二进制文件
  6. 【Android】Android 集成商米内置打印机打印票据
  7. Selenium批量查询运动员技术等级
  8. JS中script标签defer和async属性的区别
  9. php安全新闻早八点-Microdoor-第四季
  10. c++ 调用opencv+tesseract做图片文字识别