【剑指Offer_在线编程】 【牛客网:字符串的排序】
来源:互联网 发布:it is essential that 编辑:程序博客网 时间:2024/06/06 09:11
问题描述:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
解题思路:
把一个字符串看成由两部分组成:第一部分为它的第一个字符,第二部分是后面的所有字符。ABC排序图解如下:
实现代码
import java.util.*;public class Solution { public ArrayList<String> Permutation(String str) { ArrayList<String> result = new ArrayList<String>(); if(str==null || str.length()==0) { return result; } char[] chars = str.toCharArray(); //将字符串转换为字符数组 TreeSet<String> temp = new TreeSet<>();//用于排序,红黑树数据结构 Permutation(chars, 0, temp); result.addAll(temp); return result; } public void Permutation(char[] chars, int begin, TreeSet<String> result) { if(chars==null || chars.length==0 || begin<0 || begin>chars.length-1) { return; } if(begin == chars.length-1) { result.add(String.valueOf(chars)); }else { for(int i=begin ; i<=chars.length-1 ; 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; }}
阅读全文
0 0
- 【剑指Offer_在线编程】 【牛客网:字符串的排序】
- 【剑指Offer_在线编程】 【牛客网22题:二叉搜索树的后序遍历序列】
- 剑指offer_字符串---字符串的排列
- 剑指offer_表示数字的字符串
- 剑指offer_字符串转整数
- 剑指offer_左旋转字符串
- 剑指offer_字符串转整数
- 剑指offer_数字在排序数组中出现的次数
- 剑指Offer_面试题28_字符串的排列
- 华为在线编程系列-字符串排序
- 字符串排序 Java编程练习 学堂在线
- NowCoder 剑指Offer_编程题 链表中环的入口节点
- 剑指offer_字符串---左旋转字符串
- 剑指offer_把字符串转换成整数
- 牛客网-华为在线编程004--C++字符串的分割
- 剑指offer_常用编程技巧总结
- 剑指offer_常用编程技巧总结2
- 剑指Offer_编程题 替换空格
- 解决get/post提交乱码的一个filter
- ubuntu(16.04)创建windows启动U盘,使用woeusb,而不是dd
- DateTimePicker用法
- tomcat配置及遇见的问题
- 轻松学习JavaScript
- 【剑指Offer_在线编程】 【牛客网:字符串的排序】
- JS(十二)
- java socket and server源码
- 简述兼职陷阱~
- 关于过滤器处理get提交参数的BUG
- 并行计算cuda
- Java---界面weblaf使用table
- mysql一些原生基本操作
- 自己实现Java中基于双向链表的LinkedList