gpt4 book ai didi

数组中的Java匹配模式

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:39:24 26 4
gpt4 key购买 nike

我有两个字符数组(例如 arr[]1 {'w','o','r','d'}arr[]2 {'o' ,'r'}) 并需要检查 arr[]1arr[]2 的模式出现(arr2< 的所有值 必须以相同的顺序出现在 arr1 中)。

我已经通过转换为字符串并使用正则表达式解决了这个问题。但是,我想知道是否可以在不构建由每个数组中的字符组成的字符串的情况下解决这个问题。

是否有可能检查整个数组是否是 JAVA 中另一个数组的一部分(同时考虑到连续性/索引序列)或者我是否必须遍历每个值 [n], [n+1] ,... [arr2.length] of arr2 并查看它是否存在于 arr1[indexofFoundChar],[index+1]... 和很快。非常感谢任何帮助。

最佳答案

对于这么小的数组,直接比较(蛮力法)应该就足够了。

for (int i = 0; i < lenA - lenB; i++)  {
int j = 0;
while (j < lenB) && (B[j] = A[i+j])
j++;
if (j==lenB)
return true;
}
return false;

它工作得很快,但当出现重复/部分匹配的模式时会变成二次方(比如当你寻找“abcd”时会出现“abcabcd”)

对于更大的阵列,选择任何简单的 string searching algorithm像 Boyer-Moore、Knutt-Morris-Pratt、Rabin-Karp 一样——但将它们应用于数组项,而不是字符串。

关于数组中的Java匹配模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53371296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com