Привет всем, мой вопрос немного легкоРазность множеств
public static Set<String> edits(String word) {
Set<String> edits = new HashSet<String>();
List<SplitWord> splits = SplitWord.allSplits(word);
for (SplitWord split: splits) {
String a = split.prefix;
String b = split.suffix;
int lb = b.length();
if (lb > 0) {
edits.add(a + b.substring(1)); // delete
for (int i = 0; i < ALPHABET.length(); ++i)
edits.add(a + ALPHABET.charAt(i) + b.substring(1)); // replace
}
if (lb > 1)
edits.add(a + b.charAt(1) + b.charAt(0) + b.substring(2)); // transpose
for (int i = 0; i < ALPHABET.length(); ++i)
edits.add(a + ALPHABET.charAt(i) + b); // insert
}
return edits;
}
public static Set<String> edits2(String word){//Double Edits according to norvig's spell corrector. Recursive way.
Set<String> firstSet = new HashSet<String>();
Set<String> secondSet= new HashSet<String>();
firstSet.addAll(edits(word));
for(String w: editsn){
secondSet.addAll(edits(w));
if(secondSet.contains(edits1(word))){
secondSet.remove(w);
}
}
return secondSet;
}
Вот мои два метода, мой «редактирует» орфографическая ошибка проверки метод только для одной ошибки орфографии. Например, если вы пишете (atson), он говорит (watson). Я использую функцию «редактирования» рекурсивным способом проверки ошибок двойного заклинания (например, tson to watson). Он работает, но мой второй набор содержит firstSet, поэтому он также печатает также орфографические ошибки. Я пытаюсь удалить элементы, но это не сработает. Итак, как печатать разницу двух наборов? (Математически AB)
[ 'set1.removeAll (SET2)'] (https://docs.oracle.com/javase/7/docs/api/java/util/Set.html#removeAll%28java.util.Collection % 29) – khelwood