写在前面
今天这道题,《统计一致字符串的数目》,是针对字符串结构的一道题。
涉及到数组,所以一定会遇到遍历这些情况,至于如何解题那就一起来看一下吧。
题目解读
根据题目的描述来看,一共就是两个元素,字符串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方法就会搞得这么慢。
其他思路
这道题就是因为没有其他思路才不得以使用replaceAll的方式来处理的,大家自行想一下吧。
总结
本道题,主要考察的是字符串之间的比对情况,除了使用indexOf、replaceAll等方式处理,暂时没有想到其他好的办法。