如何获得字符串及其所有子字符串的所有可能排列?

时间:2018-10-12 22:10:49

标签: combinations permutation

我正在尝试查找字符串及其所有子字符串的所有可能排列。 例如,给定输入“ abc”,该函数应返回:

['a', 'b', 'c', 'ab', 'ac', 'ba', 'bc', 'ca', 'cb', 'abc', 'acb', 'bac', 'bca', 'cab', 'cba']

我已经尝试了好几个小时,却找不到任何解决方案。也没有找到任何相关问题。最好使用C#或Java解决方案,但这无关紧要。伪代码也可以。

1 个答案:

答案 0 :(得分:0)

解决方案实际上很烦人:

static void permSub(String s, String pre)
{    
  System.out.println(pre);

  if(s.isEmpty()) return;

  for(int i=0; i<s.length(); i++)
    permSub(s.substring(0, i)+s.substring(i+1), pre+s.charAt(i));
}

测试:

public static void main(String[] args)
{
  permSub("abc", "");
}

输出:

a
ab
abc
ac
acb
b
ba
bac
bc
bca
c
ca
cab
cb
cba

请注意,该方法也会输出空集,这在技术上是正确的,但您可能希望将其过滤掉。