字符串的排列
2017-06-22 16:24
162 查看
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
//以下使用深度优先搜索,属于图算法的一种,英文缩写为DFS即Depth First Search. using System.Collections.Generic; class Solution { public List<string> Permutation(string str) { // write code here List<string> result = new List<string>(); if (str==null|| str.Length == 0) { return result; } char[] chars = str.ToCharArray(); //重复的元素自动被移除,且内部会自动做排序 SortedSet<string> temp = new SortedSet<string>(); Permutation(chars, 0, temp); result.AddRange(temp); return result; } public void Permutation(char[] chars, int begin, SortedSet<string> result) { if (chars.Length==0) { return; } //遍历至最后一个元素,说明全部已交换完成 if (begin==chars.Length-1) { result.Add(new string(chars)); return; } for (int i = 0; i < chars.Length; i++) { swap(chars, begin, i); Permutation(chars, begin + 1, result); swap(chars, begin, i); } } public void swap(char[] x, int a, int b) { char t = x[a]; x[a] = x[b]; x[b] = t; } }
相关文章推荐
- 字符串全排列和组合算法
- 20180305(数组,顺序搜索,二分搜索,数组排列,C字符串)
- 字符串全排列
- 字符串的排列
- 字符串排列
- 字符串的排列
- 剑指offer 28. 字符串的全排列
- 字符串排列组合2
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
- 一个消除重复排列的所有输入字符串的排列算法
- 笔试题:字符串全排列
- 字符串按照单词为单位逆序排列
- 一个用VB实现的对任意字符串进行排列并排序的函数
- 编写一个函数(递归实现) 实现:将参数字符串中的字符反向排列。
- 字符串的排列
- 编程之法:字符串的排列组合
- 编写一个函数将参数字符串中的字符反向排列
- 面试算法学习-4-字符串全排列
- ?字符串的排列
- 求字符串全排列