Find all the permutations of a string

就是permutations II考虑有重复字母的情况。

String str = "someString";
char[] charArray = str.toCharArray();

对char array进行排序:

Arrays.sort(charArray)

之后再把CharArray转化成string:

char[] myString = new char[]
{‘T‘, ‘H‘, ‘I‘, ‘S‘, ‘ ‘,  ‘I‘, ‘S‘, ‘ ‘, ‘T‘, ‘E‘, ‘S‘, ‘T‘};

String output1 = new String(myString);

permutation II 的代码

public class Solution {
    public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        Arrays.sort(nums);
        LinkedList<Integer> list = new LinkedList<Integer>();
        for (int num : nums) list.add(num);
        perm(list, 0, res);
        return res;
    }
    private void perm(LinkedList<Integer> nums, int start, List<List<Integer>> res){
        if (start == nums.size() - 1){
            res.add(new LinkedList<Integer>(nums));
            return;
        }
        for (int i = start; i < nums.size(); i++){
            if (i > start && nums.get(i) == nums.get(i - 1)) continue;
            nums.add(start, nums.get(i));
            nums.remove(i + 1);
            perm(nums, start + 1, res);
            nums.add(i + 1, nums.get(start));
            nums.remove(start);
        }
    }
}
时间: 2024-11-08 08:14:11

Find all the permutations of a string的相关文章

HDOJ-ACM1015(JAVA) 运用 组合、全排列实现

转载声明:原文转自:http://www.cnblogs.com/xiezie/p/5573934.html 这个题目的题意:(自己结合百度翻译,简单的翻译了一下) “这个项目是在一个在二楼图书馆一幅画的背后的克莱因的保险箱里.克莱因的保险柜是极为罕见的:他们中的大多数都随着克莱因和他的工厂在二战中被摧毁.幸运的是,老布伦博在他死之前研究发现了克莱因的秘密并写下来了.一个克莱因保险箱有两个特点是:一个使用字母而不是数字的组合锁,和一个刻在门上的引用.克莱因的引用总是包含五个和十二个不同的大写字母

Burrows-Wheeler Transform

1, write down all the permutations of the string of character ; 2, sort these rows according to the first character of each row; 3, the last coloumn is the result string. BWT reverse: 1, write down the result string transformed by BWT; 2, sort with t

不会全排列算法(Javascript实现),我教你呀!

今天我很郁闷,在实验室凑合睡了一晚,准备白天大干一场,结果一整天就只做出了一道算法题.看来还是经验不足呀,同志仍需努力呀. 算法题目要求是这样的: Return the number of total permutations of the provided string that don't have repeated consecutive letters. Assume that all characters in the provided string are each unique.F

编写一个方法,确定某字符串的所有排列组合

public static ArrayList<String> getPerms(String str) { if(str==null) return null; ArrayList<String> permutations=new ArrayList<String>(); if(str.length()==0)//终止条件 { permutations.add(""); return permutations; } char first=str.c

Cracking the coding interview汇总目录

很久之前刷的CTCI的题目,都快忘记了,做个分类汇总,再重新好好复习一遍. Chapter 1 | Arrays and Strings 1.1 Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures? 1.2 Write code to reverse a C-Style String. (C-Str

Sicily-1006

一.  题意 这道题就是考排列组合吧,再来就是比较一下字符的下标算一下两个ranking的距离.然后我总结了一个排列和一个组合的实现方法,这道题直接用的是stl 里面的next_permutation,注意要排好序,好像也有一个previous_permutation的方法的,不过没用过. 二.  过程 算出120情况,还好这里是5个字符 然后写出计算两个ranking的函数. 然后就是算最小值啦. 三. 1 // 2 // main.cpp 3 // sicily-1006 4 // 5 //

No repeats please(freecodecamp高级算法6)

把一个字符串中的字符重新排列生成新的字符串,返回新生成的字符串里没有连续重复字符的字符串个数.连续重复只以单个字符为准 例如, aab 应该返回 2 因为它总共有6中排列 (aab, aab, aba, aba, baa, baa), 但是只有两个 (aba and aba)没有连续重复的字符 (在本例中是 a). function permAlone(str) { //使用正则匹配连续重复 var regex = /(.)\1+/g;//括号代表分组,\1表示获得和第一个分组里完全相同的内容

CC150 8.4

8.4 Write a method to compute all permutations of a string. This is a very similar question to CC8.3 static Collection<String> permutations(String s) { if (s == null || s.isEmpty()) return Collections.emptyList(); if (s.length() == 1) return Collect

9.9递归和动态规划(五)——确定某字符串的所有排列组合

/** * 功能:确定某字符串的所有排列组合. */ 注意:不考虑重复字符.若考虑重复字符,只需在加入permulations时去掉重复的字符串即可. /** * 思路:元素由少到多,将新的元素塞进所有字符串中间的任意可能位置. * @param str * @return */ public static ArrayList<String> getPerms(String str){ if(str==null) return null; ArrayList<String> per