字符串的排列


題目描述

輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。

思路

本題解空間就是一棵排列樹,按照一定條件生成排列樹。
並將其每一條路徑壓入vector中。

代碼

class Solution {
    vector<string> ver;
public:
/* void swap(char &x, char &y) //include<algorithm> { char c = x; x = y; y = c; }*/
bool same(string str)  //相同不保存。。。
{
    for(int i = 0; i < ver.size(); i++)
        if(ver[i] == str)
            return false;
    return true;
}
void core(string str, int t)
{
    if(t == str.size()-1 && same(str))
    {
        ver.push_back(str);
    }
    sort(str.begin() + t, str.end());     //很關鍵,否則排列出錯!!! 也可以調用結束后暴力排序
        for(int i = t; i < str.size(); i++)
        {
            swap(str[i], str[t]);
            core(str, t+1);
            swap(str[i], str[t]);
        }
}
vector<string> Permutation(string str)
{
    sort(str.begin(),str.end());
    core(str, 0);
    return ver;
}
};


  1. STL之string
    string 2

  2. 子集樹與排列樹


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



字符串的排列 字符串的排列 字符串的排列 字符串的排列 字符串的排列 字符串全排列 字符串的全排列 字符串全排列 求字符串的排列 字符串的全排列
 
粤ICP备14056181号  © 2014-2021 ITdaan.com