我與Java玩,我的問題是:如何獲得的X字符的所有可能的序列從n個字符在Java中的字符串
我有n個字符,例如一個字符串abcd,我怎樣才能得到這個字符串中所有可能的x字符序列?與「序列」我的意思是,我只對那些尊重原始字符串中字符順序的組合感興趣。
因此,舉例來說,如果我找的字符串中的2個字符序列ABCD我想只獲得
AB,AC,AD,BC,BD,CD。
我對所有其他可能的組合(如da,cb等)不感興趣,因爲它們不尊重原始字符串中字符的順序。
有什麼建議嗎?
我與Java玩,我的問題是:如何獲得的X字符的所有可能的序列從n個字符在Java中的字符串
我有n個字符,例如一個字符串abcd,我怎樣才能得到這個字符串中所有可能的x字符序列?與「序列」我的意思是,我只對那些尊重原始字符串中字符順序的組合感興趣。
因此,舉例來說,如果我找的字符串中的2個字符序列ABCD我想只獲得
AB,AC,AD,BC,BD,CD。
我對所有其他可能的組合(如da,cb等)不感興趣,因爲它們不尊重原始字符串中字符的順序。
有什麼建議嗎?
這是一個combination without repetition的問題。 互聯網上有很多實現,你可以在this class找到一個。
問題可以通過兩個循環來解決。你迄今爲止做了什麼來自己解決它?
public static void print(String str) {
for (int i = 0; i < str.length(); i++) {
char curChar = str.charAt(i);
for (int j = i + 1; j < str.length(); j++) {
char otherChar = str.charAt(j);
System.out.println(new String(new char[] { curChar, otherChar }));
}
}
}
正如我所說的,問題並不是解決具體情況,而是有一個解決方案可以動態地處理n個序列字符,而不僅僅是例子和你的答案中的2個字符序列。 – yamayama
看看這個:
TreeSet<String> set = new TreeSet<String>();
final String placeHolder = "ignore me 'cause toElement parameter of subSet() is exclusive";
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add(placeHolder);
for (String ch : set) {
Set<String> subSet = set.subSet(ch, placeHolder);
if (subSet.size() > 1) {
for (String subCh : subSet) {
if (!ch.equals(subCh)) {
System.out.println(ch + subCh);
}
}
}
}
你嘗試過這麼遠嗎?作爲一個建議:把你的代碼放到你的問題中,這表明你已經完成了*某件事*來開始解決問題。你應該能夠處理一些相當簡單的情況:一個零長度的字符串,一個包含單個字符的字符串,一個包含兩個字符的字符串。然後,如何從多字符串中獲取單個字符的序列。 – spencer7593
問題不在於如何處理特定情況(一系列嵌套循環就足夠了),而是如何動態處理問題,即如何從n字符字符串中獲取x字符序列。 爲此,我不得不承認我沒有代碼可以向我們推薦目標.. – yamayama
是不是每個序列的第一個字符都要從字符串中返回單個字符?你有代碼能夠讓你獲得每個序列的第一個字符嗎?一旦你有了序列的第一個字符,是不是下一個問題得到序列的下一個字符?這不是真的只是同樣的問題......用更短的字符串? (我懷疑你得到這個問題的答案將會是你已經可以做的代碼。) – spencer7593