如何获得的X字符的所有可能的序列从n个字符在Java中的字符串
问题描述:
我与Java玩,我的问题是:如何获得的X字符的所有可能的序列从n个字符在Java中的字符串
我有n个字符,例如一个字符串abcd,我怎样才能得到这个字符串中所有可能的x字符序列?与“序列”我的意思是,我只对那些尊重原始字符串中字符顺序的组合感兴趣。
因此,举例来说,如果我找的字符串中的2个字符序列ABCD我想只获得
AB,AC,AD,BC,BD,CD。
我对所有其他可能的组合(如da,cb等)不感兴趣,因为它们不尊重原始字符串中字符的顺序。
有什么建议吗?
答
问题可以通过两个循环来解决。你迄今为止做了什么来自己解决它?
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 }));
}
}
}
+0
正如我所说的,问题并不是解决具体情况,而是有一个解决方案可以动态地处理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