前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >脚撕LeetCode(771)Easy

脚撕LeetCode(771)Easy

作者头像
JathonKatu
发布2022-01-18 08:24:39
1920
发布2022-01-18 08:24:39
举报
文章被收录于专栏:JathonKatu

题目地址:https://leetcode-cn.com/problems/jewels-and-stones/submissions/

给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。 S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J中的字母不重复,J和S中的所有字符都是字母。 字母区分大小写,因此"a"和"A"是不同类型的石头。

代码语言:javascript
复制
示例 1: 
输入: J = "aA", S = "aAAbbbb" 
输出: 3 
示例 2: 
输入: J = "z", S = "ZZ" 
输出: 0 

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

这道题的题意是:在s字符串中找到j字符串中出现过的字符。所有字符串中只会有字母,区分大小写,且j中的字符不重复s中的字符重复。(50个字母其实不需要管他)

一、爆破法

我们的思路很简单,先遍历s中的字符,给数组中对应的下标的值++

最后再根据j中的字符串,遍历数组,+数组内容后返回

执行结果如下:

255 / 255 个通过测试用例

状态:通过

执行用时: 1 ms

内存消耗: 36.5 MB

代码语言:javascript
复制
public static int numJewelsInStonesMe(String jewels, String stones) {
    int[] arrayLower = new int[26];
    int[] arrayUpper = new int[26];
    int ans = 0;
    for (int i = 0; i < stones.length(); i++) {
        char a = stones.charAt(i);
        if (a > 90) {
            arrayLower[a - 'a']++;
        } else {
            arrayUpper[a - 'A']++;
        }
    }
    for (int i = 0; i < jewels.length(); i++) {
        char a = jewels.charAt(i);
        if (a > 90) ans += arrayLower[a - 'a'];
        else ans += arrayUpper[a - 'A'];
    }
    return ans;
}

我们的方法拿到了几乎双百,时间100和内存95.但我在评论区找不到更好的办法了

这里贴出官方的另一个方法,虽然双标准都很低。。。

二、官方set法

官方的方法是将j的字符存入set中,然后遍历s,如果存在则++不存在则继续

执行结果如下:

255 / 255 个通过测试用例

状态:通过

执行用时: 2 ms

内存消耗: 36.7 MB

代码语言:javascript
复制
public int numJewelsInStones(String jewels, String stones) {
    int jewelsCount = 0;
    Set<Character> jewelsSet = new HashSet<Character>();
    int jewelsLength = jewels.length(), stonesLength = stones.length();
    for (int i = 0; i < jewelsLength; i++) {
        char jewel = jewels.charAt(i);
        jewelsSet.add(jewel);
    }
    for (int i = 0; i < stonesLength; i++) {
        char stone = stones.charAt(i);
        if (jewelsSet.contains(stone)) {
            jewelsCount++;
        }
    }
    return jewelsCount;
}

总的来说这道题的思路还是蛮简单的,只是不知道为什么拿不到双百,这里还是需要努力看看有没有别的思路。

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

本文分享自 JathonKatu 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档