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

剑指offer 66题 -- 字符串的排列

时间:2017-03-04 20:46:35      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:public   end   offer   nbsp   for   sort   strong   处理   return   

class Solution {
public:
vector<string> Permutation(string str) {
    vector<string> result;
    if(str.size()<=0)
      return result;

    int start = 0;

    permute( str, start, result);

    sort( result.begin(), result.end() );

    return result;
  }

     //采用传引用的方式,处理递归过程中的结果输出
  void permute( string str, int start, vector<string> &result)
  {

           //采用递归方式处理字符串,将第一个字符和每个字符交换位置

           //然后再处理每一个除了头字符的字符串, 就这样递归处理
    //当已经到了最后一个字符时候,需要将字符串填入vector,递归收尾
    if(start == str.size()-1)
    {
      result.push_back( str );
      return;
    }

            
    for(int j=start; j<str.size(); ++j)
    {
      if(j!=start && str[j]==str[start])
        continue;

      swap(str[start], str[j]);
                   //每次交换后,就开始处理子字符串
      permute(str, start+1, result);

      swap(str[start], str[j]);
    }
      return ;
  }
};

剑指offer 66题 -- 字符串的排列

标签:public   end   offer   nbsp   for   sort   strong   处理   return   

原文地址:http://www.cnblogs.com/shewell/p/6502476.html

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