【LeetCode】Jewels and Stones(宝石与石头)
这道题是LeetCode里的第771道题。
题目要求:
给定字符串
J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:
输入: J = "aA", S = "aAAbbbb"
输出: 3
示例 2:
输入: J = "z", S = "ZZ"
输出: 0
注意:
S和J最多含有50个字母。J中的字符不重复。
送送送送送送送送送送分题!!!
提交代码:
class Solution {
public:
    int numJewelsInStones(string J, string S) {
        int hashmap[128]{0},sum=0;
        for(int i=0;i<J.length();i++)
            if(hashmap[J[i]]==0)hashmap[J[i]]=1;
        for(int i=0;i<S.length();i++){
            if(hashmap[S[i]])sum++;
        }
        return sum;
    }
};
运行结果:

个人总结:
当时截图没有保存,现在实例多了,时间跟不上了。这个题目的简单程度堪比于 Hello World!多贴一些代码吧:
public:
    int numJewelsInStones(string J, string S) {
        int n[52]={0};
        int count=0;
        if(J.empty()||S.empty())
            return 0;
        for(auto tmp:J){
            if(tmp<='Z'&&tmp>='A'){
                ++n[tmp-'A'+26];
            }
            else
                ++n[tmp-'a'];
        }
        for(auto tmp:S){
           if(tmp<='Z'&&tmp>='A'){
                if(n[tmp-'A'+26]!=0)
                    ++count;
            }
            else{
                if(n[tmp-'a']!=0)
                    ++count;
            }
        }
        return count;
    }
};
↑↑↑曾经的最优解 4ms,现在也不行了。↑↑↑
//java 1
class Solution {
    public int numJewelsInStones(String J, String S) {
        int num = 0;
        for(int i=0;i<S.length();i++){
            if(J.contains(S.charAt(i)+"")){
                num++;
            }
        }
        return num;
    }
}
//java 2
class Solution {
    public int numJewelsInStones(String J, String S) {
        if (J == null || S == null) {
            return 0;
        }
        Set<Character> set = new HashSet<Character>();
        for (int i = 0; i < J.length(); i ++) {
            set.add(J.charAt(i));
        }
        int result = 0;
        for (int i = 0; i < S.length(); i ++) {
            if (set.contains(S.charAt(i))) {
                result ++;
            }
        }
        return result;
    }
}
//java 3
class Solution {
    public int numJewelsInStones(String J, String S) {
        int flag=0;
        char[] js=J.toCharArray();
        char[] ss=S.toCharArray();
        Set<Character> set=new HashSet<>();
        for(char c:js){
            set.add(c);
        }
        for(char s:ss){
            if(set.contains(s))
                flag++;
        }
        return flag;
    }
}
//java script 1
/**
 * @param {string} J
 * @param {string} S
 * @return {number}
 */
var numJewelsInStones = function(J, S) {
    var res = 0
    S.split('').forEach( i => {
        if(J.indexOf(i) >= 0) res++
    })
    return res
};
//java script 2正则表达式
/**
 * @param {string} J
 * @param {string} S
 * @return {number}
 */
var numJewelsInStones = function(J, S) {
    var P = new RegExp(`[${J}]`, 'g');
    var R = S.match(P);
    if (!R) return 0;
    return R.length;
};
//java script 3
/**
 * @param {string} J
 * @param {string} S
 * @return {number}
 */
var numJewelsInStones = function(J, S) {
    var sum = 0;
    for (var i = 0; i < S.length; i++) {
        if (J.indexOf(S[i]) != -1) {
            sum++;
        }
    }
    return sum;
};
//java script 4
/**
 * @param {string} J
 * @param {string} S
 * @return {number}
 */
var numJewelsInStones = function(J, S) {
    if (!J || !S) {
        return 0;
    }
    var jewels = J.split('');
    var stones = S.split('');
    var count = 0;
    stones.forEach(item => {
        if (jewels.indexOf(item) > -1) {
            count++;
        }
    });
    return count;
};
↑↑↑这些都是 Java 解法,可以看出解法大致相同。因为题目简单,大家都在尝试如何使用优雅的解法hhh↑↑↑
【LeetCode】Jewels and Stones(宝石与石头)的更多相关文章
- LeetCode 771.  Jewels and Stones (宝石与石头)
		
题目标签:Hash Table 这一题很简单,题目给了两个string:J 和 S. 只要把J 里面的 char 放入HashSet,再遍历S找出有多少个石头是宝石. Java Solution: R ...
 - [LeetCode] Jewels and Stones 珠宝和石头
		
You're given strings J representing the types of stones that are jewels, and S representing the ston ...
 - Leetcode771.Jewels and Stones宝石与石头
		
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. J 中的字母不重复,J 和 S中的所有字符都是字母 ...
 - [LeetCode] 771. Jewels and Stones 珠宝和石头
		
You're given strings J representing the types of stones that are jewels, and S representing the ston ...
 - Leetcode#771.Jewels and Stones(宝石与石头)
		
题目描述 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. J 中的字母不重复,J 和 S中的所有字 ...
 - LeetCode --> 771. Jewels and Stones
		
Jewels and Stones You're given strings J representing the types of stones that are jewels, and S rep ...
 - 【Leetcode】Jewels and Stones
		
Jewels and Stones Description You're given strings J representing the types of stones that are jewel ...
 - Java实现 LeetCode 771 宝石与石头(这是真暴力)
		
771. 宝石与石头 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. J 中的字母不重复,J 和 ...
 - 771. Jewels and Stones - LeetCode
		
Question 771. Jewels and Stones Solution 题目大意:两个字符串J和S,其中J中每个字符不同,求S中包含有J中字符的个数,重复的也算 思路:Set记录字符串J中的 ...
 
随机推荐
- JVM垃圾回收机制一
			
JVM内存分配与回收 JVM 分代 JVM把堆分为年轻代和老年代,年轻代又分为1个Eden区和2个Survivor区,Eden和Survivor的内存的大小比例是8:1:1. 为什么要分代? 很大的原 ...
 - 前端上传插件Plupload的实际使用(个人实操)
			
一个主要的页面,其中包裹了一个iframe页面,在项目中,这个iframe页面包裹在主页面的div标签中,主要用于上传文件附件. 用的是plupload.full插件,主要引入以下几个js: jque ...
 - Android实现按钮点击效果(第一次点击变色,第二次恢复)
			
1.首先创建一个按钮 <Button android:id="@+id/click" android:layout_width="fill_parent" ...
 - Apache Kafka框架学习
			
背景介绍 消息队列的比较 kafka框架介绍 术语解释 文件存储 可靠性保证 高吞吐量实现 负载均衡 应用场景 背景介绍: kafka是由Apache软件基金会维护的一个开源流处理平台,由scala和 ...
 - Eclipse下对MAVEN进行junit软件测试
			
一.Maven project management and build automation tool, more and more developers use it to manage the ...
 - 包含日志文件getshell
			
包含日志文件getshell 一.包含日志文件漏洞利用概述 当我们没有上传点,并且也没有url_allow_include功能时,我们就可以考虑包含服务器的日志文件. ...
 - SQL——SQL语言全部关键字详解
			
http://blog.csdn.net/quinnnorris/article/details/71056445 数据库中我们做常用的就是SQL基本查询语言,甚至有些人认为数据库就是SQL,SQL就 ...
 - Ace 在Vue中使用方法
			
var Vue = require('vue/dist/vue.common.js'); document.querySelector('body').append(document.createEl ...
 - react中的setState的使用和深入理解
			
前端框架从MVC过渡到MVVM.从DOM操作到数据驱动,一直在不断的进步着,提升着, angular中用的是watcher对象,vue是观察者模式,react就是state了,他们各有各的特点,没有好 ...
 - 一个batch如何通过一个网络
			
一个batch下所有的图片一起经过整个网络,不是说一张图片经过网络后再让下一张进入网络,这样一个batch一起通过网络计算速度比一张一张这样快