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

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

写在前面


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

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

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等方式处理,暂时没有想到其他好的办法。


相关文章
|
1月前
|
算法
【优选算法】—— 字符串匹配算法
【优选算法】—— 字符串匹配算法
|
2月前
|
人工智能 移动开发 算法
【动态规划】【C++算法】LeetCoce996正方形数组的数目
【动态规划】【C++算法】LeetCoce996正方形数组的数目
|
2月前
|
算法 测试技术 C++
【动态规划】【C++算法】2518. 好分区的数目
【动态规划】【C++算法】2518. 好分区的数目
|
2月前
|
算法 C++
【动态规划】【子序列除重】【C++算法】1987不同的好子序列数目
【动态规划】【子序列除重】【C++算法】1987不同的好子序列数目
|
2月前
|
算法 测试技术 C++
【动态规划】【图论】【C++算法】1575统计所有可行路径
【动态规划】【图论】【C++算法】1575统计所有可行路径
|
2月前
|
人工智能 算法 测试技术
【动态规划】【字符串】【C++算法】940. 不同的子序列 II
【动态规划】【字符串】【C++算法】940. 不同的子序列 II
|
18天前
|
算法 测试技术 C#
【字典树】【KMP】【C++算法】3045统计前后缀下标对 II
【字典树】【KMP】【C++算法】3045统计前后缀下标对 II
|
18天前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
29天前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
33 0
|
1月前
|
存储 算法 JavaScript
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(二)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
28 0