如何获得的X字符的所有可能的序列从n个字符在Java中的字符串

如何获得的X字符的所有可能的序列从n个字符在Java中的字符串

问题描述:

我与Java玩,我的问题是:如何获得的X字符的所有可能的序列从n个字符在Java中的字符串

我有n个字符,例如一个字符串abcd,我怎样才能得到这个字符串中所有可能的x字符序列?与“序列”我的意思是,我只对那些尊重原始字符串中字符顺序的组合感兴趣。

因此,举例来说,如果我找的字符串中的2个字符序列ABCD我想只获得

AB,AC,AD,BC,BD,CD。

我对所有其他可能的组合(如da,cb等)不感兴趣,因为它们不尊重原始字符串中字符的顺序。

有什么建议吗?

+0

你尝试过这么远吗?作为一个建议:把你的代码放到你的问题中,这表明你已经完成了*某件事*来开始解决问题。你应该能够处理一些相当简单的情况:一个零长度的字符串,一个包含单个字符的字符串,一个包含两个字符的字符串。然后,如何从多字符串中获取单个字符的序列。 – spencer7593

+0

问题不在于如何处理特定情况(一系列嵌套循环就足够了),而是如何动态处理问题,即如何从n字符字符串中获取x字符序列。 为此,我不得不承认我没有代码可以向我们推荐目标.. – yamayama

+0

是不是每个序列的第一个字符都要从字符串中返回单个字符?你有代码能够让你获得每个序列的第一个字符吗?一旦你有了序列的第一个字符,是不是下一个问题得到序列的下一个字符?这不是真的只是同样的问题......用更短的字符串? (我怀疑你得到这个问题的答案将会是你已经可以做的代码。) – spencer7593

这是一个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 })); 
      } 
     } 
    } 
+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); 
       } 
      } 
     } 
    }