zoukankan      html  css  js  c++  java
  • 剑指offer-字符串的排列

    题目描述

    输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

    输入描述:

    输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.Set;
    
    public class Solution {
        ArrayList<String> ans = new ArrayList<>();
        public ArrayList<String> Permutation(String str) {
            
            if(str.isEmpty()){
                return ans;
            }
            Set<String> ret = new HashSet<>();
            Rec(0,str,ret);
    
            return ans;
        }
    
        public void Rec(int pos, String s, Set<String> ret){
            if(pos+1 == s.length()){
                if(!ret.contains(s)){
                    ans.add(s);
                }
                ret.add(s);
                return;
            }
    
            for (int i = pos; i<s.length(); ++i){
                char[] swap = s.toCharArray();
                char c = swap[i];
                swap[i] = swap[pos];
                swap[pos] = c;
                s = new String(swap);
                Rec(pos+1,s,ret);
                swap = s.toCharArray();
                c = swap[i];
                swap[i] = swap[pos];
                swap[pos] = c;
            }
        }
    }
    
  • 相关阅读:
    802.11协议网文转载
    三角函数公式大全
    IEEE 802.11ac Standard
    FPGA设计如何进行面积优化
    直流偏差消除
    I/Q不平衡补偿
    WiFi6剩余频偏的影响
    SQL SERVER 调优等待类型
    Nginx
    fatal: HttpRequestException encountered解决方法
  • 原文地址:https://www.cnblogs.com/ZCWang/p/13132826.html
Copyright © 2011-2022 走看看