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

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

写在前面


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

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

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

总结


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


相关文章
|
2月前
|
机器学习/深度学习 存储 算法
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
|
2月前
|
存储 算法 索引
模拟算法题练习(二)(DNA序列修正、无尽的石头)
模拟算法题练习(二)(DNA序列修正、无尽的石头)
|
20天前
|
存储 算法 C语言
【数据结构与算法 刷题系列】合并两个有序链表
【数据结构与算法 刷题系列】合并两个有序链表
|
1月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
1月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
1月前
|
算法 搜索推荐 数据可视化
【漫画算法】插入排序:插入宝石的传说
【漫画算法】插入排序:插入宝石的传说
|
19天前
|
算法
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
|
19天前
|
算法
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
|
20天前
|
算法
【数据结构与算法 刷题系列】移除链表元素
【数据结构与算法 刷题系列】移除链表元素
|
20天前
|
存储 算法 C语言
【数据结构与算法 刷题系列】环形链表的约瑟夫问题
【数据结构与算法 刷题系列】环形链表的约瑟夫问题