字符串全排列

class Solution {//類似於數組的全排列,但是需要注意有的元素相同需要去除,因此用了set元素不能重複的特性
public:
    vector<string>tmp;
    set<string>Tmp;
    void print(string str, int index, int len,vector<bool>visit,string a)
{
	if (index >= len)
	{
		Tmp.insert(a);
		return;
	}
	for (int i = 0; i<len; i++)
	{
		if (!visit[i])
		{
			visit[i] = true;
			a[index] = str[i];
			print(str, index + 1, len,visit,a);
			visit[i] = false;
		}

	}
}
    vector<string> Permutation(string str) {
        if(str.empty())
            return tmp;
    string a = str;
	int len = str.size();
	vector<bool>visit(len);
	print(str, 0, len,visit,a);
	for (set<string>::iterator it = Tmp.begin(); it != Tmp.end(); it++)
		tmp.push_back(*it);
	return tmp;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章