包含所有同义词的字符串组合



>我有一个字符串,其中某些单词具有一些同义词。

例如字符串:A B C D

带有同义词的单词是:

A => AX, AY, AZ

B => BX, BY

C => CX, CY, CZ

我必须找到具有这些同义词的不同字符串组合。

上述字符串的输出应为:

AX, BX, CX

AX, BX, CY

AX, BX, CZ

AX, BY, CX

斧头,比,CY

AX, BY, CZ


并从密钥 A 的 AY 重复相同的过程,依此类推......

我有一个包含地图列表的单词同义词列表。 和 每个映射都包含一个作为单词 (A( 的键和一个作为该单词的同义词列表的值。

e.g. [{A=[AX, AY, AZ]},{B=[BX, BY]}.....]

我正在尝试使用嵌套循环,循环数 = 具有同义词的单词数。但是带有同义词的单词不是固定的。

如何使用递归来执行此操作?

## 编辑部件 ##

我正在尝试使用嵌套的 for 循环来实现这一点,但我认为这是不可能的,因为单词不是固定的。

for(Map> wordSynonym : wordSynonymList( {

for(Map.Entry<String, List<String>> words : wordSynonym.entrySet()) {
String a = words.getKey(); //gives me A
for (String synonym : words.getValue()) {
//gives me all synonym of A
}
}
}

你的方法不是很有效,但你可以制作一个简单的函数来做到这一点:

public static Object getKeyFromValue(Map hm, Object value) {
for (Iterator iter = hm.entrySet().iterator(); iter.hasNext();) {
Map.Entry e = (Map.Entry) iter.next();
if (e.contains(value)) {
return e.getKey();
}
}
return null;
}

我还没有测试它是否有效,但它是沿着这些思路

最新更新