题目

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

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

示例 1:

输入: J = "aA", S = "aAAbbbb"输出: 3

示例 2:

输入: J = "z", S = "ZZ"输出: 0

思路:

    方法一:可以直接使用暴力破解,套两层循环,外层循环 S ,内层循环 J ,只要 S 中的字符在 S 中出现的个数即为宝石的数量。

    方法二:方法一中遍历 S 中的任一字符都要遍历一次 J 进行比对,时间复杂度较高,我们循环遍历字符串 J ,使用 map 存储 J 中的字符,然后遍历 S 判断字符是否在 map 中,如果在即时宝石的数量。

Go代码示例:

func numJewelsInStones(J string, S string) int {jewels := map[byte]bool{}counts := 0for i := 0; i < len(J);i++ {jewels[J[i]] = true}for i := 0; i < len(S); i++ {if jewels[S[i]] {counts++}}return counts
}

复杂度分析

  • 时间复杂度:O(m+n),其中 m 为 J 的长度,n 为 S 的长度。

  • 空间复杂度:O(m)

常见算法题 - 宝石与石头相关推荐

  1. 语言高精度算法阶乘_JavaScript中的算法(附10道面试常见算法题解决方法和思路)...

    https://juejin.im/post/6844903811505455118 Introduction 面试过程通常从最初的电话面试开始,然后是现场面试,检查编程技能和文化契合度.几乎毫无例外 ...

  2. 二叉树常见算法题(单值二叉树、二叉树的最大深度、反转二叉树、判断两颗二叉树是否相同、对称二叉树、一颗二叉树是否是另一颗二叉树的子树)

    这里的代码都是递归实现的,再强调下二叉树的概念,二叉树的构成有两种情况: 1.空树 2.根节点 + 左子树 + 右子树(这里的左子树和右子树又是一颗二叉树) 可以看出二叉树就是递归定义的,下面的算法题 ...

  3. 算法题 身高差_10个大数据处理常见算法题

    第一部分.十道海量数据处理 1.海量日志数据,提取出某日访问百度次数最多的那个IP. 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用 ...

  4. python 常见算法题

    前言 随着行业的发展,编程能力逐渐成为软件测试从业人员的一项基本能力.因此在笔试和面试中常常会有一定量的编码题,主要考察以下几点. 基本编码能力及思维逻辑 基本数据结构(顺序表.链表.队列.栈.二叉树 ...

  5. leetcode算法题--最后一块石头的重量 II★

    原题链接:https://leetcode-cn.com/problems/last-stone-weight-ii/ 这个题目可以转化成0-1背包问题,非常巧妙.把问题看成有两堆石头,求如何将使两堆 ...

  6. 前端常见算法题(伯乐在线)

    伯乐在线看到一片文章前端面试中的常见的算法问题,先试着做一下,不会的先留着. 一.Q1 判断一个单词是否是回文? 第一个想到的方法就是字符串转数组(split),数组反转(reverse),再转为字符 ...

  7. JAVA常见算法题(三十二)---找规律

    题目一: 4,5,15,45,135,405,__ 题目二: 524,244,954,674,394,15,725, __ 题目三: 7,8,6,9,10,7,4,4,5,__ 求横线位置的整数. * ...

  8. JAVA常见算法题(三十一)---冒泡排序

    package com.jege.spring.boot.hello.world;/*** java算法之冒泡排序<br>* 将数组按照从大到小的顺序排列<br>* * * @ ...

  9. 常见算法题(1)求最大公因数

    最大公因(约)数,是指两个或多个整数共有因数中最大的一个.两个数a,b的最大公因数记作(a,b). 求最大公因数的算法有: (1)辗转相除法 有两整数a和b:     ① a%b得余数c     ② ...

最新文章

  1. 【2016北京集训测试赛】river
  2. ubuntu 10.10下搭建android开发环境 安装必要工作用软件
  3. QT的QAction类的使用
  4. Prototype模式
  5. 卸掉包袱,诺基亚将走得更远
  6. pytorch学习笔记(五):线性回归的简洁实现
  7. Wireshark 文件分割和合并
  8. 接雨水c语言算法精解,详解一道高频面试题:接雨水
  9. 8uftp官网网址,8uftp官网网址及5大软件特色
  10. LeetCode 105. 从前序与中序遍历序列构造二叉树(dfsdfs、边界判定情况、做一题送一题)
  11. Python中统一快速更换变量的名称
  12. 【Linux命令】mergecap命令的用法
  13. ProjectProfessional2003密钥
  14. python爬虫Selenium批量关注微博用户
  15. vb.net 教程 1-9 数组3-1 数组的合并
  16. 如何辨识兰花的好坏?
  17. 自动开关,每天写“日报......顺舟智能推动路灯“服务升级”
  18. Oracle存储空间管理
  19. 谷歌手机pixel4 夜景_您应该购买Google Pixel 4a的5个理由
  20. IDA官网发布的每周技巧8----以批处理模式在后台运行IDA

热门文章

  1. 刷脸支付互联网思维的推广让传播变得更快
  2. 硬盘识别成 CD驱动器
  3. 微信小游戏开发之CocosCreator多分辨率场景适配方案
  4. 基于SOFA的空间坐标系变换
  5. ADB命令启动手机端应用
  6. python extractall函数_python - Pandas从str.extractall('#')给出错误 - 堆栈内存溢出
  7. mysql数据库sql优化看这里之索引优化
  8. 浏览器主页遭到恶意捆绑?治它
  9. Mr.Captain东:跳动的心(CSS3)
  10. ssm+jsp计算机毕业设计海鲜商行信息管理系统80scc(程序+lw+源码+远程部署).