我正在尝试查找字符串及其所有子字符串的所有可能排列。 例如,给定输入“ abc”,该函数应返回:
['a', 'b', 'c', 'ab', 'ac', 'ba', 'bc', 'ca', 'cb', 'abc', 'acb', 'bac', 'bca', 'cab', 'cba']
我已经尝试了好几个小时,却找不到任何解决方案。也没有找到任何相关问题。最好使用C#或Java解决方案,但这无关紧要。伪代码也可以。
答案 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
请注意,该方法也会输出空集,这在技术上是正确的,但您可能希望将其过滤掉。