Метод ниже выполняет эту работу, но это не очень эффективно.Обнаружить, если две строки содержат только одинаковые слова.
Кто-нибудь знает более элегантное решение для этого?
я возился с чем-то вроде этого, но не везло до сих пор:/^ (Foo | Бар | [[: пространство:] [пунктуатором]]) + $/
static public boolean matchTitle(String title, String title2) {
Scanner scanner1 = new Scanner(title);
Scanner scanner2 = new Scanner(title2);
String searchTitle = title2;
boolean match = false;
int i = 0;
while(i < 2){
if(i == 1){
scanner1 = new Scanner(title2);
scanner2 = new Scanner(title);
searchTitle = title;
}
// breaks into words
while (scanner1.hasNext()){
match = false;
String token = scanner1.next();
scanner2 = new Scanner(searchTitle);
while (scanner2.hasNext() && !match){
String token2 = scanner2.next();
if(token.equals(token2)){
// if the words match
match = true;
}
}
if(!match){ // we have a word that didn't match any words in the second title
return false;
}
}
i++;
}
return true;
}
Пример
("аналогичные слова здесь", "подобные слова здесь") // истинные
("аналогичные слова здесь", "слова здесь подобные здесь") // истинные
("подобные слова он повторно», "подобные слова здесь разные") // ложные
Пожалуйста, введите пример ввода, который вы ожидаете для каждого случая (true/false). –
Пример: («похожие слова здесь», «похожие слова здесь») // true («похожие слова здесь», «здесь похожие слова») // true («похожие слова здесь», «похожие слова здесь разные») // false –
Вы можете использовать regex для достижения этого? – pcalcao