我需要在特定範圍內生成所有可能的字符串。 例如
上界 - aaa
羅威在一起 - ccc
在一個範圍內生成所有可能的字符串
也有可能的情況下aab-caa
,hhu - kkk
,但不aaz - ccc
值應該是
aaa
aab
aac
aba
abb
abc
aca
acb
acc
caa
cab
cac
cca
ccb
ccc
我寫了這樣的方法,但它不工作正確地說,我不知道如何正確地做到這一點,現在我很難找到所有可能的情況,請幫助
public static List<String> generateAllPossibleStrings(String start, String end) {
if (start.length() != end.length()) {
return null;
}
List<String> variants = new ArrayList<>();
char startArray[] = start.toCharArray();
char endArray[] = end.toCharArray();
char currentArray[] = Arrays.copyOf(startArray, startArray.length);
variants.add(new String(currentArray));
for (int i = startArray.length - 1; i >= 0; i--) {
while (currentArray[i] != endArray[i]) {
currentArray[i]++;
variants.add(new String(currentArray));
for (int j = startArray.length - 1; j > i; j--) {
while (currentArray[j] != endArray[j]) {
currentArray[j]++;
variants.add(new String(currentArray));
}
currentArray[j] = startArray[j];
}
}
currentArray[i] = startArray[i];
}
System.out.println(Arrays.toString(variants.toArray()));
return variants;
}
對於上面的例子中我得到了
[aaa, aab, aac, aba, abb, abc, aca, acb, acc, baa, bab, bac, bba, bca, caa, cab, cac, cba, cca]
正如你可以看到一些值丟失。
請幫助糾正此方法並使其正確工作,或者它應該作爲遞歸方法實施。
說明
爲什麼aaz - ccc
是不可能的,因爲在下界任何字符(ccc
)應磨碎器,在本例z
上限(aaz
)對應的字符是磨碎器比c
所以這是不正確。
的可能重複:http://stackoverflow.com/questions/35867767/generate-all-permutations-of -string-in-some-range?noredirect = 1#comment59406966_35867767 –
這個問題沒有答案,我已經提供了我的代碼,請幫忙,我不要求從零開始寫它 – gzbuaapzroyn
是'aab-caa'組合可能嗎? 'b'比'a'更大' –