网站备案完成后接下来怎么做,网络营销的特点包括什么,长春建站服务,淘宝网站建设的主图如何设计输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。这里尤其需要注意2点#xff1a;1.所有组…输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。这里尤其需要注意2点1.所有组合不能重复比如输入aa 那么输出的结果应当是“aa” 2. 输出结果按字典序排序如果用《剑指offer》上的方法显然这两点都不能满足比如输入abc输出结果为abc acb bac bca cba cab 如果输入aa输出解过为aa aa 。显然这两种结果都是有问题的。下面是《剑指offer》版本的代码1 importjava.util.ArrayList;2 importjava.util.List;3 public classSolution {4 private List list new ArrayList();5 privateStringBuffer buffer;6 public ArrayListPermutation(String str) {7 if(strnull||str.length()0) return (ArrayList) list;8 buffer newStringBuffer(str);9 PermutationCore(0);10 return (ArrayList) list;11 }12 public void PermutationCore(intbegin) {13 if(beginbuffer.length()-1){14 list.add(buffer.toString());15 }16 for(int i begin;i那么如何解决上面两点存在的问题呢这里给推荐一种数据结构TreeSet。 这个在C中我不知道有没有应该是没有但是作为Java程序员这是比较幸福的地方。TreeSet这个数据结构本身采用红黑树实现能够自动将字符串按照字典序排序同时因为其实现了Set接口所以又能同时保证所有的结果是一个集合。而学过离散数学的朋友都知道集合中的元素是不会重复的所以如果我们采用TreeSet对排列的结果进行存储那么就能轻易的达到上述要求。下面是本人实现的代码1 importjava.util.ArrayList;2 importjava.util.Iterator;3 importjava.util.List;4 importjava.util.Set;5 importjava.util.TreeSet;6 public classSolution {7 private List list new ArrayList();8 private Set set new TreeSet();9 privateStringBuffer buffer;10 public ArrayListPermutation(String str) {11 if(strnull||str.length()0) return (ArrayList) list;12 buffer newStringBuffer(str);13 PermutationCore(0);14 Iterator iterator set.iterator();15 while(iterator.hasNext()){16 list.add(iterator.next());17 }18 return (ArrayList) list;19 }20 public void PermutationCore(intbegin) {21 if(beginbuffer.length()-1){22 set.add(buffer.toString());23 }24 for(int i begin;i26 swap(begin,i);27 PermutationCore(begin1);28 swap(begin,i);29 }30 }31 public void swap(int i,intj){32 char a buffer.charAt(i);33 char b buffer.charAt(j);34 buffer.setCharAt(i, b);35 buffer.setCharAt(j, a);36 }37 }输入“abc” 输出abc acb bac bca cab cba 输入“aaa”输出aaa 显然符合要求了。最后我们来看一看TreeSet的层次结构类似的结构还有ArrayListLinkedListHashSetHashMapTreeMapPriorityQueueStack。另外重要的接口有ListSetMapQueueDequeComparatorComparableItrerator。这些都是在编写数据结构和算法的时候经常用到的尤其需要留意。