算法编程(二十九):统计一致字符串的数目

简介: 算法编程(二十九):统计一致字符串的数目

写在前面


今天这道题,《统计一致字符串的数目》,是针对字符串结构的一道题。

涉及到数组,所以一定会遇到遍历这些情况,至于如何解题那就一起来看一下吧。

image.png

题目解读


根据题目的描述来看,一共就是两个元素,字符串1代表着判断规则,字符串数组2代表着一系列待检查的字符串。

要从数组中找出只包含字符串1中字符的元素,最后返回匹配规则的元素数量。

解题思路也是一样,通过双重循环来判断。

外层循环遍历字符串数组,内层循环遍历字符串1的每一个字符。

然后在内层循环中,直接将匹配的值替换成空,保证不会重复验证。

最后等待内层循环遍历完成后,判断字符串元素的长度是否为0,就知道是否符合规则了。

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

代码实现


本次运行代码如下所示,大家可以选择性的参考一下,replaceAll的方式不太提倡。

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.countConsistentStrings("ab", new String[]{"ad","bd","aaab","baa","badab"}));
    }
    public int countConsistentStrings(String allowed, String[] words) {
        int count = 0;
        for (String s : words) {
            String word = s;
            for (int j = 0; j < allowed.length(); j++) {
                if (word.length() != 0) {
                    word = word.replaceAll(String.valueOf(allowed.charAt(j)), "");
                }
            }
            if (word.length() == 0) {
                count++;
            }
        }
        return count;
    }
}

代码执行结果


我算是发现了,每次使用replaceAll方法就会搞得这么慢。

image.png

其他思路


这道题就是因为没有其他思路才不得以使用replaceAll的方式来处理的,大家自行想一下吧。

总结


本道题,主要考察的是字符串之间的比对情况,除了使用indexOf、replaceAll等方式处理,暂时没有想到其他好的办法。


相关文章
|
4月前
|
算法
【算法】滑动窗口——找到字符串中所有字母异位词
【算法】滑动窗口——找到字符串中所有字母异位词
|
20天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
36 2
|
2月前
|
算法
两个字符串匹配出最长公共子序列算法
本文介绍了最长公共子序列(LCS)问题的算法实现,通过动态规划方法求解两个字符串的最长公共子序列,并提供了具体的编程实现细节和示例。
89 1
两个字符串匹配出最长公共子序列算法
|
2月前
|
存储 缓存 分布式计算
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
这篇文章是关于数据结构与算法的学习指南,涵盖了数据结构的分类、数据结构与算法的关系、实际编程中遇到的问题以及几个经典的算法面试题。
36 0
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
|
2月前
|
算法 Python
Python算法编程:冒泡排序、选择排序、快速排序
Python算法编程:冒泡排序、选择排序、快速排序
|
4月前
|
算法 Java
掌握算法学习之字符串经典用法
文章总结了字符串在算法领域的经典用法,特别是通过双指针法来实现字符串的反转操作,并提供了LeetCode上相关题目的Java代码实现,强调了掌握这些技巧对于提升算法思维的重要性。
|
4月前
|
存储 算法 搜索推荐
编程之旅中的算法启示
【8月更文挑战第31天】在编程世界的迷宫里,算法是那把钥匙,它不仅能解锁问题的答案,还能引领我们深入理解计算机科学的灵魂。本文将通过一次个人的技术感悟旅程,探索算法的奥秘,分享如何通过实践和思考来提升编程技能,以及这一过程如何启示我们更深层次地认识技术与生活的交织。
|
5月前
|
自然语言处理 算法 搜索推荐
字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析
在自然语言处理领域,人们经常需要比较字符串,这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似,或者相似度是好还是差。这类似于我们使用手机打错一个词,但手机会建议正确的词来修正它,那么这种如何判断字符串相似度呢?本文将详细介绍这个问题。
283 1
|
5月前
|
存储 算法 搜索推荐
告别低效编程!Python算法设计与分析中,时间复杂度与空间复杂度的智慧抉择!
【7月更文挑战第22天】在编程中,时间复杂度和空间复杂度是评估算法效率的关键。时间复杂度衡量执行时间随数据量增加的趋势,空间复杂度关注算法所需的内存。在实际应用中,开发者需权衡两者,根据场景选择合适算法,如快速排序(平均O(n log n),最坏O(n^2),空间复杂度O(log n)至O(n))适合大规模数据,而归并排序(稳定O(n log n),空间复杂度O(n))在内存受限或稳定性要求高时更有利。通过优化,如改进基准选择或减少复制,可平衡这两者。理解并智慧地选择算法是提升代码效率的关键。
71 1
|
4月前
|
存储 算法
【C算法】编程初学者入门训练140道(1~20)
【C算法】编程初学者入门训练140道(1~20)