字符串的排列

萝卜er 萝卜er     2022-08-06     272

关键词:

题目描述

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

 

这个题思路不难,大致思路是

把第一个字母看做一部分,后面的所有字母看做一部分。用第一个字母和后面的所有字母依次交换,每交换一次把后一部分的字符串执行相应的操作。执行完之后,再把这一层刚刚换了的两个字母换回来,再用第一个和后面部分的下一个互换,反复执行

 

注意:可是这个有一个步骤是需要互换的,这个就很烦,最开始想到了用数组,后来感觉输出还要转成string存进ArrayList类型变量中,就放弃了。准备用Stringbuffer类的设置某一的索引位的字符,可是对java的类库不熟。。。本地测试成功了,可是在线oj一直不行。

于是看了大家的讨论,发现原来 new string(参数这里可以传入字符类型的数组),简直太方便了,以前还各种循环拼起来。 这样的话就用数组做,也不麻烦。

还需要注意一点就是万一原字符串是  aab类似的,这样包看会不会重复,可以用arraylist的contains的方法判断

代码参考来自 牛课网 老石基

 

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[] c = str.toCharArray();
        Permutation(result, c, 0, c.length);
        Collections.sort(result);
        return result;
    }
 
    public void Permutation(ArrayList<String> list,char[] c, int star,int end){
        if(star==end-1){
            String result = new String(c);
            if(!list.contains(result))
                list.add(result);
            return;
        }
        //交換
        for(int i = star;i<end;i++){
            char temp = c[star];
            char temp2 = c[i];
            c[star] = temp2;
            c[i] = temp;
            Permutation(list,c,star+1,end);
            c[star] = temp;
            c[i] = temp2;
        }
    }
}

 

字符串的全排列

给定一个字符串,打印对应的全排列数组,比如abc,对应的全排列是:abc,acb,bac,bca,cba,cab。下面分析下思路是什么样的。基本的思路是这样的,首先固定一个字符,比如a,计算剩余字符的全排列,也就是bc的全排列,此时... 查看详情

字符串的排列

题目输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。(输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。)... 查看详情

1120.全排列(代码片段)

给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有‘a‘<‘b‘<...<‘y‘<‘z‘,而且给定的字符串中的字母已经按照从小到大的顺序排列。输入:输入只有一行,是... 查看详情

回文排列和排列有啥区别? [关闭]

...1-1417:39:04【问题描述】:我见过一些编码问题来检查一个字符串是否是回文的排列,其他时候检查一个字符串是否是另一个字符串的排列。不确定我看到两者之间的区别。如果字符串是回文的排列,则 查看详情

003:全排列(代码片段)

描述给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有‘a‘<‘b‘<...<‘y‘<‘z‘,而且给定的字符串中的字母已经按照从小到大的顺序排列。输入输入只有一行,是一... 查看详情

算法习题---字符串的全排序列(代码片段)

一:什么是全排列排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列;全排列:当n==m时,称为全排列;比如:集合1,2,3的全排列为:123132213231321312我们可以将这个排列问题画成图形表示,即排列枚举树,比... 查看详情

字符串的排列组合问题(代码片段)

排列问题:我们求整个字符串的排列,可以看成两步,首先求可能出现在第一个位置上的字符,即把第一个字符和后面所有的字符交换。第二步固定一个字符,求后面所有字符的全排列。这是一个递归的思想。importjava.util.ArrayLis... 查看详情

字符串的排列

输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路:把一个字符串看成两部分组成:第一部分为第一个字符,第二部分为后面... 查看详情

字符串的排列

字符串的排列题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符... 查看详情

字符串数组全排列——逐个追加组合算法

...可以通过递归简单的实现,看下面两个例子:(1)关于字符串排列的问题输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。可... 查看详情

字符的排列

问题:输入一字符串(要求不存在重复字符),打印出该字符串中字符中字符的所有排列。思路:求所有可能出现在第一个位置的字符,把第一个字符和其后面的字符一一交换。固定第一个字符,求后面所有字符的排列。这个时候扔... 查看详情

生成给定字符串的所有排列

】生成给定字符串的所有排列【英文标题】:Generatingallpermutationsofagivenstring【发布时间】:2011-05-1312:13:36【问题描述】:找到字符串的所有排列的优雅方法是什么?例如。ba的排列将是ba和ab,但是像abcdefgh这样的更长的字符串呢... 查看详情

字符串的排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括... 查看详情

面试题38.字符串的排列(全排列)(代码片段)

题目:  解答:1classSolution2public:3vector<string>permutation(stringstr)45vector<string>result;6if(str.empty())78returnresult;91011Permutation(str,result,0);1213//此时得到的result中排列并不 查看详情

字符串的排列

题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包... 查看详情

题目1120:全排列

...23解决:1409题目描述:给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有‘a‘<‘b‘<...<‘y‘<‘z‘,而且给定的字符串中的字母已经按照从小到大的顺序排列。输入:... 查看详情

字符串去反复全排列算法(代码片段)

【题目描写叙述】输入一个字符串,打印出该字符串中字符的全部排列。比如输入字符串abc,则输出由字符a、b、c所能排列出来的全部字符串abc、acb、bac、bca、cab和cba。【分析】从集合中依次选出每个元素。作为排列... 查看详情

找到一些字符串的字典最小排列

】找到一些字符串的字典最小排列【英文标题】:FindingLexicographicallysmallestarrangementofsomestring【发布时间】:2016-09-2209:26:27【问题描述】:标题似乎是一个非常常见的问题,但请多多包涵。基本上让我们在字符串的每个索引处说... 查看详情