美文网首页
27、字符串的排列

27、字符串的排列

作者: quiterr | 来源:发表于2017-09-02 21:44 被阅读0次

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

这题一开始忽视了要按字母顺序打印。不百度真的记不住char[]转String、Arrays.sort、substring()等细节~

import java.util.*;
public class Solution {
    public ArrayList<String> Permutation(String str) {
        
        ArrayList<String> ret = new ArrayList<>();
        if(str==null){
            return ret;
        }
        if(str.length()==1){
            ret.add(str);
            return ret;
        }
        
        //题目要求按字母顺序打印,需先排序
        str = strSort(str);
        Set<Character> set = new HashSet<>();
        
       for(int i=0; i<str.length(); i++){
           if(set.contains(str.charAt(i))){
               continue;
           }
           set.add(str.charAt(i));
           StringBuffer sb = new StringBuffer(str);
           char head = sb.charAt(i);
           sb.setCharAt(i,str.charAt(0));
           
           ArrayList<String> list = Permutation(sb.substring(1,sb.length()));
           for(String s: list){
               ret.add(head+s);
           }
       }
        return ret;
    }
    
    public String strSort(String str){
        char[] chars = str.toCharArray();
        Arrays.sort(chars);
        return String.valueOf(chars);
    }
}

相关文章

  • 27、字符串的排列

    题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能...

  • 27:字符串的排列

    题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所...

  • 27. 字符串的排列

    题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所...

  • 迭代算法

    问题 输入一个字符串,给出该字符串所有的排列 问题分析 非常标准的排列问题,不考虑字符串重复的前提下共有n!种排列...

  • LeetCode - 0006 - ZigZag Convers

    题目概要 将字符串按照ZigZag的顺序重新排列,求排列之后的新字符串。 题目链接 ZigZag Conversi...

  • 27-字符串的排列-没懂

    题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所...

  • 38:字符串的排列

    题目38:字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列。 举例说明 例如输入字符串abc。则打印出...

  • 字符串的全排列

    字符串的全排列 题目描述: 输入一个字符串,打印出该字符串中字符的所有排列。 例如输入字符串abc,则输出由字符a...

  • JZ-027-字符串的排列

    字符串的排列 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打...

  • 剑指offer - 字符串的排列

    题目 输入一个字符串,打印出该字符串中字符的所有排列。 例如,输入字符串abc,则打印出由字符串a、b、c能排列出...

网友评论

      本文标题:27、字符串的排列

      本文链接:https://www.haomeiwen.com/subject/nvlcwttx.html