gpt4 book ai didi

java - 模式的字符串匹配

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

我有 2 个模式字符串 a.{var1}.{var2}b.{var1}.{var2}

如果第一个字符串中的 var1 与第二个字符串中的 var1 相同,并且第一个字符串中的 var2 相同,则两个字符串匹配作为第二个字符串中的 var2

变量可以是任何顺序,如a.{var1}.{var2}b.{var2}.{var1}

如何有效匹配两个字符串?

示例 1:

String pattern1 = "1.{var1}";
String pattern2 = "2.{var1}";

//Match True = (1.111,2.111)
//Match False = (1.121,2.111)

示例 2:

String pattern1 = "1.{var1}.{var2}";
String pattern2 = "2.{var1}.{var2}";

//Match True = (1.11.22,2.11.22)
//Match False = (1.11.22,2.111.22)

示例 3:

String pattern1 = "1.{var1}.{var2}";
String pattern2 = "2.{var2}.{var1}";

//Match True = (1.22.11,2.11.22)
//Match False = (1.11.22,2.111.22)

那么匹配这 2 个字符串的最佳方法是什么?

我想匹配这两个字符串,看看它们是否与提到的模式相关。
将此问题扩展到一组字符串,即集合 A 字符串必须与集合 B 中的字符串匹配。最后必须形成满足此匹配算法的字符串对。匹配集合 A 到集合 B 中的所有字符串时,模式将保持不变。

最佳答案

这可能不是执行此操作的最有效方法,但它确实会为您提供预期的输出。

01/05:Ole 在评论中指出错误后更新了代码::

private boolean compareStr(String a, String b) {
ArrayList<String> aList = new
ArrayList<String>(Arrays.asList(a.split("\\.")));
ArrayList<String> bList = new ArrayList<String>(Arrays.asList(b.split("\\.")));
bList.remove(0);
aList.remove(0);

if(aList.size() != bList.size())
return false;

boolean aMatchFlag = false;
for(int i=0; i< aList.size(); i++){
if (!bList.contains(aList.get(i))) {
return false;
}
}
aMatchFlag = true;
System.out.println("All elements of A are present in B");
boolean bMatchFlag = false;
for(int i=0; i< bList.size(); i++){
if (!aList.contains(bList.get(i))) {
return false;
}
}
bMatchFlag = true;
System.out.println("All elements of B are present in A");

if(aMatchFlag && bMatchFlag)
return true;
else
return false;
}

对于那些也在寻找代码性能的人

Input:1.11.11, 2.11.11.11
Compilation time: 1.45 sec, absolute running time: 0.24 sec, cpu time: 0.26 sec, memory peak: 18 Mb, absolute service time: 1,7 sec

Input:1.11.11, 2.11.22
Compilation time: 1.25 sec, absolute running time: 0.24 sec, cpu time: 0.23 sec, memory peak: 18 Mb, absolute service time: 1,49 sec

Input:1.11.2, 2.11.22
Compilation time: 1.34 sec, absolute running time: 0.24 sec, cpu time: 0.24 sec, memory peak: 18 Mb, absolute service time: 1,58 sec


Input:1.11.2, 2.11.111
Compilation time: 1.65 sec, absolute running time: 0.28 sec, cpu time: 0.32 sec, memory peak: 18 Mb, absolute service time: 1,94 sec

关于java - 模式的字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50006119/

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