码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer28 字符串的排列

时间:2017-05-10 17:56:42      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:定义   turn   string   而不是   public   class   solution   相同   ==   

1.全局变量可以在最后去定义并初始化,不一定非要在开头

2.此题有一种特殊情况需要考虑,比如字符串是“aa”,那输出应该是“aa”,而不是“aa,aa”,即相同的不输出。实现这个处理用了c++中的容器set,set不保存重复元素。在存储的时候,遇到相同的元素,set不会把相同的元素保存进set。clear是清空set中的元素。

3.

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

 

剑指offer28 字符串的排列

标签:定义   turn   string   而不是   public   class   solution   相同   ==   

原文地址:http://www.cnblogs.com/ymjyqsx/p/6837063.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!