zoukankan      html  css  js  c++  java
  • 字符串的排列

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

    思路:递归,回溯。

    实现代码:

    import java.util.*;
    public class Solution {
        public ArrayList<String> Permutation(String str) {
            
            ArrayList<String> ret = new ArrayList<String>();
            if(str == null || str.length() <= 0)
                return ret;
            dfs(str.toCharArray(), 0, ret);
            Collections.sort(ret);
            
            return ret;
           
        }
        
        public void dfs(char[] chs, int i, ArrayList<String> ret) {
            
            if(i == chs.length - 1) {
                ret.add(String.valueOf(chs));
            }
            else {
                for(int j=i; j<chs.length; j++) {
                    if(i == j || chs[i] != chs[j]) {
                        swap(chs, i, j);
                        dfs(chs, i+1, ret);
                        swap(chs, i, j);
                    }
                }
            }
            
        }
        
        public void swap(char[] chs, int i, int j) {
            char ch = chs[i];
            chs[i] = chs[j];
            chs[j] = ch;
        }
    }
  • 相关阅读:
    我的Asp.Net Hello World程序

    快速排序
    Python是一门什么样的语言
    Python开发简介
    LVS(Linux Viretual Server) 负载均衡器 + 后端服务器
    易迷糊题
    python语言入门 第四天
    日常练习 1.0
    User_Login_Register_Shopping 1.0
  • 原文地址:https://www.cnblogs.com/wxisme/p/5456918.html
Copyright © 2011-2022 走看看