剑指Offer------字符串的排列(全排列)
来源:互联网 发布:安卓sd卡数据恢复软件 编辑:程序博客网 时间:2024/06/01 10:03
题目描述 :输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,
c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;/** * * @author zy * @date 2017年10月4日 下午7:01:59 * @Decription 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b, * c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: * 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 * * */public class Ex17 {public ArrayList<String> Permutation(String str) {ArrayList<String> result = new ArrayList<>();if (str == null || str.length() == 0) {return result;}HashSet<String> set = new HashSet<>();permutationHelper(set, str.toCharArray(), 0);result.addAll(set);Collections.sort(result);return result;}//全排列算法void permutationHelper(HashSet<String> set,char[] cs,int k){if (k == cs.length) {set.add(new String(cs));return;}for(int i=k;i<cs.length;i++){swap(cs, i, k);permutationHelper(set, cs, k+1);swap(cs, i, k);}}//交换字母位置算法void swap(char[] cs,int i,int j){if (i!=j) {char temp = cs[i];cs[i] = cs[j];cs[j] = temp;}}}
阅读全文
1 0
- 剑指Offer------字符串的排列(全排列)
- 剑指offer:字符串的排列(字符串全排列)
- 剑指offer:字符串的全排列
- 剑指offer 28. 字符串的全排列
- 剑指offer 之 字符串的全排列、全组合
- 剑指offer 28字符串全排列
- 《剑指offer》:[28]字符串的全排列问题
- 剑指offer----字符串的全排列----java实现
- 【面试题】剑指Offer-28-字符串的全排列
- 剑指offer面试题28 字符串的全排列
- 【剑指offer】字符串的排列
- 剑指offer--字符串的排列
- 《剑指offer》字符串的排列
- 【剑指Offer】字符串的排列
- 剑指offer--字符串的排列
- 剑指offer:字符串的排列
- 剑指offer:字符串的排列
- 剑指offer:字符串的排列
- [Haskell] CodeWars|Bouncing Balls
- HYSBZ
- 常用的Oracle的doc命令
- JAVA面试题整理之—基础篇第一部
- poj 2287 田忌赛马
- 剑指Offer------字符串的排列(全排列)
- ACM ICPC 2017 Warmup Contest 1 (NCPC 2016)
- 在IntelliJ IDEA下搭建基于Maven的spring boot框架
- 215[Medium]:Kth Largest Element in an Array
- Gemfire命令集
- JavaScript 数组对象深拷贝与浅拷贝
- JavaWeb笔记(1)
- Spring报错:org.springframework.beans.factory.NoUniqueBeanDefinitionException
- B-number (数位DP)