gpt4 book ai didi

java - 在 Java 中查找所有可能的 'StringPairGroups' 的算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:20 24 4
gpt4 key购买 nike

数学/算法从来都不是我的强项(!),所以在这方面请求帮助。

具有以下签名的方法的最有效实现是什么:

/*
* pairParts.size() > 0
* pairParts.size() is always an even number
*/
private Set<StringPairGroup> getAllPossibleStringPairGroups(Set<String> pairParts) {
Set<StringPairGroup> groups = new HashSet<StringPairGroup>();
// logic that adds all possible StringPairGroups
` return groups;
}

/*
* StringPair object: first and second values cannot be null.
* StringPair object: first != second
* StringPair object: is equal to another if both the first values and both the second values are equal.
*/
public class StringPair {
private final String first;
private final String second;
...
}

/*
* StringPairGroup object: is equal to another if their StringPair sets exactly match.
*/
public class StringPairGroup {
Set<StringPair> stringPairs
...
}

例如,{'A', 'B'} 的输入将返回 {[AB],[BA]}。{'A', 'B', 'C', 'D'} 的输入将返回{[AB],[BA],[AC],[CA],[AD],[DA][...],[AB,CD],[BA,CD],[AB,DC],[BA ,DC],[AC,DB],[...]}.

我真的只对创建所有可能的 StringPairGroups 的逻辑感兴趣对于任何一组输入字符串。我可能会想出某种蛮力实现方式,但我更想知道如何做一些更“聪明”的事情。

因此,关于我将如何实现的任何提示都会很有用。

编辑:

对不起各位,我想我可能错过了一些非常重要的事情。我真的开始混淆自己了。就是这样:

StringPairGroup 不能在其所有 StringPair 中包含重复的“对部分”。这有意义吗?

最佳答案

我会这样做:

  1. 在 StringPair 中实现一个比较,当传递给另一个 StringPair 时,比较它们是否共享任何元素:boolean shareElement(StringPair other)
  2. 我可以创建一个包含所有可能的字符串对的列表[AB]、[BA]、[AC]、[CA]
  3. 然后我会为 i = 1 - (originalList.size()/2)...

    执行以下操作

    一个。从不共享任何元素的唯一对列表中创建 i 个元素的组合。

将此解决方案与@Hemal Pandya 的解决方案相结合,我想您会得到答案。意思是,将 Hemal 的集合递归组合与上面的 shareElement 结合使用。

编辑:我还会创建一个boolean shareElement(StringPair... others)

关于java - 在 Java 中查找所有可能的 'StringPairGroups' 的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581913/

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