鑑於以下幾組: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
它按預期工作嗎?它出什麼問題了? –