宝石

LeetCode 771 宝石和石头

狂风中的少年 提交于 2020-03-17 23:01:21
Input: J = "aA", S = "aAAbbbb" Output: 3 解:J为宝石字符串,S为包含宝石的字符串,J中的字母如果在S中出现数字就➕1   键值对让下标对应值为1,如果目标数组中的下标所对应的第一个数组中的值存在==1,则该字母是宝石字母 var numJewelsInStones = function(J, S) { let array1 = J.split(''); let array2 = S.split(''); let count = 0; let obj = {}; array1.forEach(item=>{ obj[item] = 1; }) array2.forEach(item=>{ if(obj[item]){ count++; } }) return count; };    来源: https://www.cnblogs.com/xiyu-8023/p/9254459.html

题目 :宝石与石头

假装没事ソ 提交于 2020-03-02 19:24:54
题目: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。 题解: var numJewelsInStones = function(J, S) { var sum = 0; for(var i=0;i<J.length;i++){ for(var n=0;n<S.length;n++){ if(J\[i\] === S\[n\]){ sum ++; } } } return sum; }; 来源: oschina 链接: https://my.oschina.net/u/4207725/blog/3185350

「网易官方」极客战记(codecombat)攻略-游戏开发1-宝石太棒了gemtacular

安稳与你 提交于 2020-03-02 15:38:20
创建一个满是宝石的森林,供玩家游玩! 简介 添加收集目标,然后生成一些宝石供玩家收集! 默认代码 # Anya在搜索宝石! # 为关卡添加宝石,以供玩家搜寻。 # 你必须能够通过你的关卡,这样才能继续。 game.spawnPlayerXY("captain", 9, 18) # 使用game.addCollectGoal()来添加宝石收集目标。 game.spawnXY("gem", 28, 28) # 为关卡再添加3个宝石以供玩家收集: 概览 Coming soon! 宝石太棒了 解法 # Anya在搜索宝石! # 为关卡添加宝石,以供玩家搜寻。 # 你必须能够通过你的关卡,这样才能继续。 game.spawnPlayerXY("captain", 9, 18) # 使用game.addCollectGoal()来添加宝石收集目标。· game.addCollectGoal() game.spawnXY("gem", 28, 28) # 为关卡再添加3个宝石以供玩家收集: game.spawnXY("gem", 69, 10) game.spawnXY("gem", 9, 36) game.spawnXY("gem", 45, 44) 本攻略发于极客战记官方教学栏目,原文地址为: https://codecombat.163.com/news/jikezhanji

LeetCode-宝石与石头

瘦欲@ 提交于 2020-02-25 20:45:49
宝石与石头 LeetCode-771 使用哈希表。 这里使用内置算法库中的map /** * 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 * S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 * J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。 **/ #include<iostream> #include<cstring> #include<string> #include<cstdio> #include<map> #include<vector> #include<set> #include<stack> using namespace std; /** * 输入: J = "aA", S = "aAAbbbb" * 输出: 3 **/ class Solution { public: int numJewelsInStones(string J, string S) { map<char,int>ma; for(int i=0;i<J.length();i++){ ma[J[i]]++; } int ans=0; for(int i=0;i<S.legnth();i++){ if(ma[S[i]]){ ans++; } } return ans; } }; int

771. 宝石与石头

拟墨画扇 提交于 2020-02-13 05:51:36
给定字符串 J 代表石头中宝石的类型,和字符串 S 代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复, J 和 S 中的所有字符都是字母。字母区分大小写,因此 "a" 和 "A" 是不同类型的石头。 示例 1: 输入: J = "aA", S = "aAAbbbb" 输出: 3 示例 2: 输入: J = "z", S = "ZZ" 输出: 0 注意: S 和 J 最多含有50个字母。 J 中的字符不重复。 AC: 1 static const auto __ = []() 2 { 3 ios::sync_with_stdio(false); 4 cin.tie(nullptr); 5 return nullptr; 6 }(); 7 class Solution { 8 public: 9 int numJewelsInStones(string J, string S) { 10 int ans; 11 ans = 0; 12 for(int i= 0; i < S.length(); i++) { 13 for(int j = 0; j <J.length(); j++) { 14 if(S[i] == J[j]) { 15 ans++; 16 break; 17 } 18 } 19 } 20

Leet Code 771.宝石与石头

心不动则不痛 提交于 2020-02-13 05:50:01
Leet Code编程题 希望能从现在开始,有空就做一些题,自己的编程能力太差了。 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 中的字符不重复。 思路是:遍历S字符串,对每一个字符查找是否在J字符串中出现,若出现则计量增一。直到双重循环结束。 此为最笨方法 代码如下 class Solution { public int numJewelsInStones(String J, String S) { //对S进行循环,如果字符在J中出现过则宝石++; int sum = 0; //双重循环 for(int i = 0; i<S.length(); i++){ for( int j=0; j<J.length(); j++){ char a = S.charAt(i); char b = J.charAt(j); if(a==b) sum++

771. 宝石与石头

两盒软妹~` 提交于 2020-01-19 05:12:31
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。 示例 1: 输入: J = "aA", S = "aAAbbbb" 输出: 3 示例 2: 输入: J = "z", S = "ZZ" 输出: 0 注意: S 和 J 最多含有50个字母。 J 中的字符不重复。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/jewels-and-stones 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 统计J串中的字符在S串中出现的次数,我们先遍历一遍S串,将S串中各字符的出现次数统计一遍,在遍历J串,将出现的字符的数量相加即可。采用ASCII码的快捷转换。 class Solution { public int numJewelsInStones(String J, String S) { int[] book = new int[255]; int sum = 0; for ( int i = 0; i < S.length(); i++ ) { book[(int)(S.charAt(i))]++; }

[LeetCode] 771、宝石与石头

微笑、不失礼 提交于 2020-01-13 08:49:19
题目描述 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。 示例: 输入 : J = "aA" , S = "aAAbbbb" 输出 : 3 参考代码 简单题,用哈希表 class Solution { public : int numJewelsInStones ( string J , string S ) { if ( J . size ( ) == 0 || S . size ( ) == 0 ) return 0 ; unordered_map < char , int > umap ; for ( auto c : S ) umap [ c ] ++ ; int res = 0 ; for ( auto c : J ) res + = umap [ c ] ; // 若umap[c]之前不存在,则默认为0,并且一旦访问过它,就将此键添加入umap,默认值为0 return res ; } } ; 来源: CSDN 作者: aift 链接: https://blog.csdn.net/ft_sunshine/article/details/103890640

BZOJ 3166 可持久化Trie

心不动则不痛 提交于 2019-12-21 11:44:00
Description Welcome to ALO ( Arithmetic and Logistic Online)。这是一个VR MMORPG , 如名字所见,到处充满了数学的谜题。 现在你拥有n颗宝石,每颗宝石有一个能量密度,记为ai,这些宝石的能量 密度两两不同。现在你可以选取连续的一些宝石(必须多于一个)进行融合,设为 ai, ai+1, …, a j,则融合而成的宝石的能量密度为这些宝石中能量密度的次大值 与其他任意一颗宝石的能量密度按位异或的值,即,设该段宝石能量密度次大值 为k,则生成的宝石的能量密度为max{k xor ap | ap ≠ k , i ≤ p ≤ j}。 现在你需要知道你怎么选取需要融合的宝石,才能使生成的宝石能量密度最大。 Input 第一行,一个整数 n,表示宝石个数。 第二行, n个整数,分别表示a1至an,表示每颗宝石的能量密度,保证对于i ≠ j有 ai ≠ aj。 Output 输出一行一个整数,表示最大能生成的宝石能量密度。 Sample Input 5 9 2 1 4 7 Sample Output 14 可以枚举次大值,那么它能覆盖的范围如图。 红色为枚举到的次大值,黑色为大于它的值,其余为小于它的值。 它做多能覆盖的两个区间如图。 这要在这些区间中查询即可。 对权值排序完后用set维护就好了。 #include <stdio

[HEOI2013]ALO

。_饼干妹妹 提交于 2019-12-21 11:43:32
因为每个宝石只与另外一个宝石异或,可以发现宝石的左边比他大的第2个到右边比他大的第2个区间是这个宝石能够选取另一个与其异或的范围。 枚举每个宝石,找到左右区间,暴力更新即可。。。 标程是可持久化字典树。 mycode: /** * Problem:ALO * Author:Shun Yao * Time:2013.5.22 * Result:Accepted */ #include <cstring> #include <cstdlib> #include <cstdio> using namespace std; long max(long x, long y) { return x > y ? x : y; } long n, l[50005], r[50005], a[50005], ans; int main() { static long i, j; scanf("%ld", &n); for (i = 1; i <= n; ++i) scanf("%ld", a + i); for (i = 1; i <= n; ++i) { for (j = i - 1; j >= 1 && a[j] < a[i]; --j); if (j >= 1) { --j; while (j >= 0 && a[j] < a[i]) --j; l[i] = j + 1; } else l[i