持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情
写在前面
今天这道题,《统计一致字符串的数目》,是针对字符串结构的一道题。
涉及到数组,所以一定会遇到遍历这些情况,至于如何解题那就一起来看一下吧。
题目解读
根据题目的描述来看,一共就是两个元素,字符串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等方式处理,暂时没有想到其他好的办法。