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

    题目描述

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

    输入描述:

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

    思路:http://blog.csdn.net/wangdd_199326/article/details/60149133

    直接很逗比。。。居然写出如下的代码。。。。心好累。。。。

    class Solution {
    public:
        vector<string> Permutation(string str) {
            sort(str.begin(),str.end());
            do {
                return str;
            }while(next_permutation(str.begin(),str.end()));
             
        }
    };
    

      改写了一下,成功。

    class Solution {
    public:
        vector<string> Permutation(string str) {
            
            vector<string> a;
            if(str.size()==0)	return a;
            sort(str.begin(),str.end());
            do {
                a.push_back(str);
            }while(next_permutation(str.begin(),str.end()));
            return a; 
        }
    };
    

      

    class Solution {
    public:
        vector<string> Permutation(string str) {
        	if(str!="") dfs(str,0);
            return ret;
                
        }
    private:
        vector<string> ret;
        void dfs(string str,int s) {
            
            if(s==str.size()) {
                ret.push_back(str);
                return ;
            }
            for(int i=s;i<str.size();i++) {
                if(i!=s &&str[s]==str[i])	continue;
                swap(str[s],str[i]);
                dfs(str,s+1);
            }
        }	
    };
    

      

    class Solution {
    public:
        set<string> res;
        void fun(string str, int pos)
        {
            if (pos == str.length())
            {
                res.insert(str);
                return;
            }
            for (int i = pos; i < str.length(); ++i)
            {
                swap(str[i], str[pos]);
                fun(str, pos + 1);
                swap(str[i], str[pos]);
            }
        }
        vector<string> Permutation(string str) {
            res.clear();
            vector<string> st;
            if (str.length() == 0)return st;
            fun(str, 0);
            set<string>::iterator it;
            for (it = res.begin(); it != res.end(); ++it)
                st.push_back(*it);
            return st;
        }
    }
    

      

    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    CSS 样式清单整理
    JavaScript常用方法封装
    c# 异常:值不能为 null。 参数名: source
    iframe重新加载
    jquery 获取 父级 iframe 里的控件对象
    添加外键约束
    LinQ to entities 不能识别方法“system.string.ToString(system.String)”.因此该方法无法转换为存储表达式
    c# pcm
    .Net Core 2.0 App中读取appsettings.json
    c# 泛型demo
  • 原文地址:https://www.cnblogs.com/dd2hm/p/7309392.html
Copyright © 2011-2022 走看看