gpt4 book ai didi

java - 单词相似度的正则表达式 "n letter difference"

转载 作者:行者123 更新时间:2023-11-30 01:55:49 25 4
gpt4 key购买 nike

假设我有一个这样的词; 值得。我想搜索该单词的所有 1 个字母差异组合。 aert、ert、meat、mmert、merst、merts 等均适用。所以我的正则表达式就像

[a-z]{0,2}ert OR m[a-z]{0,2}rt OR me[a-z]{0,2}t OR mer[a-z]{0,2}

因此,对于 n 个字母的差异,我只需将 2 替换为 n-1,并且您无法获得所有组合。

我的问题是这样的;有没有更短的方法来编写这个正则表达式?

谢谢

最佳答案

请检查此解决方案,我已在下面测试了此代码。似乎有效。

/**
* Then function will return list of the words matched with nth_difference
*
* @param pattern search pattern
* @param data input data
* @param nth_difference difference
* @return
*/
static List<String> getNthDifferenceWords(String pattern, String[] data, int nth_difference) {
Map<Character, Integer> frequencyTable = new HashMap<>();
List<String> matchedWords = new ArrayList<>();
//Code complexity : O(n)
for (int i = 0; i < pattern.length(); ++i) {
frequencyTable.put(pattern.charAt(i), 1);
}
//Code complexity : O(m) where m is size of entire input;
for (String input : data) {
int matchCounter = 0;
for (int j=0; j<input.length(); ++j){
if(frequencyTable.containsKey(input.charAt(j))){
++matchCounter;
}
}
//System.out.println("matched=" + matchCounter);
if(input.length() <= pattern.length() && (matchCounter == pattern.length() - nth_difference)){
matchedWords.add(input);
}
if((input.length() - pattern.length() == 1) && (matchCounter >= input.length() - nth_difference)){
matchedWords.add(input);
}
}
return matchedWords;
}


public static void main(String[] args) {
int nth_difference = 1;
String pattern = "mert";
String[] data = new String[]{"aert", "ert", "meat", "mmert", "merst", "merts","meritos"};
System.out.println(getNthDifferenceWords(pattern,data,nth_difference));

nth_difference = 2;
pattern = "merit";
data = new String[]{"aert", "ert", "meat", "mmert", "merst", "merts","demerit","merito", "meritos"};
System.out.println(getNthDifferenceWords(pattern,data,nth_difference));
}

关于java - 单词相似度的正则表达式 "n letter difference",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54553896/

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