前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >画解算法:771. 宝石与石头

画解算法:771. 宝石与石头

作者头像
灵魂画师牧码
发布2019-06-27 17:38:16
4210
发布2019-06-27 17:38:16
举报
文章被收录于专栏:灵魂画师牧码

题目链接

https://leetcode-cn.com/problems/jewels-and-stones/

题目描述

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

J 中的字母不重复,JS 中的所有字符都是字母。字母区分大小写,因此"a""A"是不同类型的石头。

示例 1:

代码语言:javascript
复制
输入: J = "aA", S = "aAAbbbb"
输出: 3

示例 2:

代码语言:javascript
复制
输入: J = "z", S = "ZZ"
输出: 0

注意:

  • S 和 J 最多含有50个字母。
  • J 中的字符不重复。

解题方案

思路

  • 标签:字符串
  • 首先对J进行遍历,将字符分别存到HashSet中,以便之后遍历S的时候查找
  • 遍历S,并将每个字符与HashSet中的进行比对,如果存在,则结果ans++,遍历结束,返回ans
  • 时间复杂度:O(m+n),m为J的长度,n为S的长度

代码

  • Java版本
代码语言:javascript
复制
class Solution {
    public int numJewelsInStones(String J, String S) {
        Set<Character> set = new HashSet<>();
        for(int i = 0; i < J.length(); i++) {
            set.add(J.charAt(i));
        }
        int ans = 0;
        for(int i = 0; i < S.length(); i++) {
            if(set.contains(S.charAt(i))){
                ans++;
            }
        }
        return ans;
    }
}
  • JavaScript版本
代码语言:javascript
复制
/**
 * @param {string} J
 * @param {string} S
 * @return {number}
 */
var numJewelsInStones = function(J, S) {
    const set = new Set();
    for(const s of J) {
        set.add(s);
    }
    let ans = 0;
    for(const s of S) {
        if(set.has(s)){
            ans++;
        }
    }
    return ans;
};

画解

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 牧码啦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目链接
  • 题目描述
  • 解题方案
    • 思路
      • 代码
        • 画解
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档