算法刷题(二十二):宝石与石头

简介: 算法刷题(二十二):宝石与石头

写在前面


今天的这道题,《宝石与石头》,是关于字符串结构的一道题。

如果你感兴趣,可以一起来看一下具体的题目。

image.png

题目解读


根据题目的标题来看,其实是很难看出来是一个什么样的题目。

但是从题目的描述来看,我们就能很容易的看出这道题到底想要干些什么了。

大概是这样,有两个字符串,分别是jewels、stones两个字符串。

从stones字符串所有字符中,筛选出jewels字符串中的字符数量。

并且保证jewels字符串中不存在重复字符的情况。

如此的话,我们就可以通过遍历两个字符串来解出这道题来。

但是我这第一时间想到的不是这个方法,而是通过替换方法来解决,先通过替换方法将含有的字符删掉,随后再比对替换前后的长度差距。

最终得到正确的结果。

下面就一起来看一下代码的编写吧。

代码实现


本次执行代码如下,大家可以自行参考一下。

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.numJewelsInStones("aA", "aAAbbbb"));
    }
    public int numJewelsInStones(String jewels, String stones) {
        int result = 0;
        for (int i = 0; i < jewels.length(); i++) {
            int length = stones.length();
            stones = stones.replaceAll(String.valueOf(jewels.charAt(i)), "");
            result = result + length - stones.length();
        }
        return result;
    }
}

代码执行结果


又是这么低的排名,真是……

image.png

其他思路


直接双重循环遍历解决的话,竟然更快,应该就是替换方法导致的效率太慢。

public int numJewelsInStones(String jewels, String stones) {
    int result = 0;
    for (int i = 0; i < jewels.length(); i++) {
        for (int j = 0; j < stones.length(); j++) {
            if(stones.charAt(j) == jewels.charAt(i)){
                result++;
            }
        }
    }
    return result;
}


image.png

总结


本道题,主要考察字符串的熟练掌握程度,一般针对字符串都是遍历字符,比对字符等等的操作,只要掌握这些,解出此题易如反掌。


相关文章
|
6月前
|
机器学习/深度学习 存储 算法
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
|
6月前
|
存储 算法 索引
模拟算法题练习(二)(DNA序列修正、无尽的石头)
模拟算法题练习(二)(DNA序列修正、无尽的石头)
|
5月前
|
存储 算法 C语言
【数据结构与算法 刷题系列】合并两个有序链表
【数据结构与算法 刷题系列】合并两个有序链表
|
1月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
14 0
|
3月前
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
|
3月前
|
算法 Python
【Leetcode刷题Python】改进的算法,高效求一个数的因子
一个高效的Python函数用于找出一个整数的所有因子,通过仅遍历到该数平方根的范围来优化性能。
42 0
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
5月前
|
算法 搜索推荐 数据可视化
【漫画算法】插入排序:插入宝石的传说
【漫画算法】插入排序:插入宝石的传说
|
5月前
|
算法
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
下一篇
无影云桌面