鉴于以下几组:2套字符串,找到一个字符串,可以从构造或者设置字符串
are yo
you u
how nhoware
alan arala
dear de
我需要找到一个可以在任何columnm串联字符串来构建一个序列,并且在两种情况下都必须使用相同数量的元素。
例如,“dearalanhowareyou”可以由两组字符串构成,每次使用5个元素。
一个无效的选择将是“dearalanhoware”,因为它会使用4个元素从左边的列,但只有3个来自右
的问题就是从这里取:
https://open.kattis.com/problems/correspondence
我正在使用这个网站来改进未来的求职面试,我似乎无法完全理解这一点。
我唯一的工作实现是采用每种可能的组合的强力方法,由于时间复杂性,这不是一个很好的解决方案。
我现在代码:
list1 = getPermutations("",send1);
list2 = getPermutations("",send2);
ArrayList<String> duplicateValues = new ArrayList<String>();
for (int i = 0; i < list1.size(); i++) {
if (list2.contains(list1.get(i))) {
duplicateValues.add(list1.get(i));
}
private static ArrayList<String> getPermutations(String currentResult, ArrayList<String> possibleChars) {
ArrayList<String> result = new ArrayList<>(possibleChars.size());
for (String append : possibleChars) {
String permutation = currentResult + append;
result.add(permutation);
if (possibleChars.size() > 0) {
ArrayList<String> possibleCharsUpdated = (ArrayList) possibleChars.clone();
possibleCharsUpdated.remove(new String(append));
result.addAll(getPermutations(permutation, possibleCharsUpdated));
}
}
return result;
}
在问这里之前,至少尝试一些代码。如果您要求我们这样做,我们不会为您编写程序。 –
我写了一个实现来强制它,把每一个可能的组合和比较它们,这对于小集合来说真的是可行的。我似乎无法找出一种不同的方式做 – intact28
它按预期工作吗?它出什么问题了? –