combinations - 如何获得字符串及其所有子字符串的所有可能排列?
问题描述
我正在尝试查找字符串及其所有子字符串的所有可能排列。例如,给定输入“abc”,该函数应返回:
['a', 'b', 'c', 'ab', 'ac', 'ba', 'bc', 'ca', 'cb', 'abc', 'acb', 'bac', 'bca', 'cab', 'cba']
我一直在尝试几个小时,但找不到任何解决方案。也没有找到任何相关的问题。首选 AC# 或 Java 解决方案,但这并不重要。伪代码也可以。
解决方案
解决方案实际上非常简单:
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
请注意,该方法也输出空集,这在技术上是正确的,但您可能希望将其过滤掉。
推荐阅读
- angular - 在 Angular 中使用 InMemoryDbService 时找不到错误 404 Url
- reactjs - 尽管单击其他选项,但无法更改 React 本机选择器
- python - 如何在QLabel中调整图片的大小?
- react-native - 如何将 Stack.Screen 中的内容垂直居中,包括标题到计算中?
- sql - 使用 SQL 根据查询中的值创建和填充列
- computation-theory - 考虑Alphabet = {0,a},表示语言L = {w ∈ Σ^* : |w|0a = |w|a0} 的自动机是规则的吗?
- javascript - 使用字典映射 API 响应并创建对象数组,尝试删除重复项
- wordpress - 如何使用 WooCommerce 预订来安排面对面的课程?
- python - 如何在 Pandas 的两列上使用聚合函数而不弄乱索引?
- javascript - JavaScript Regex - 如何检查字符串是否仅包含字母、数字、破折号、下划线和点