具有所有同义词的字符串组合

时间:2018-08-15 12:36:52

标签: java recursion

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

例如字符串:A B C D

和带有同义词的单词是:

A => AX,AY,AZ

B => BX,BY

C => CX,CY,CZ

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

上面的String的输出应该是:

AX,BX,CX

AX,BX,CY

AX,BX,CZ

AX,BY,CX

AX,BY,CY

AX,BY,CZ


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

我有一个wordSynonymList,它包含一个Map列表。每个地图都包含一个键(即单词(A))和一个值(该单词的同义词列表)。

例如[{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
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

您的方法不是很有效,但是您可以设计一个简单的函数来完成此任务:

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;
}

我还没有测试它是否有效,但确实如此