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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer 66题 -- 字符串的排列相关的知识,希望对你有一定的参考价值。

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题 -- 字符串的排列的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer 66题 -- 将一个字符串中的空格替换成“%20”

剑指Offer-面试案例面试题66:把字符串转为整数

剑指offer-字符串的排列

剑指offer-字符串的排列

剑指Offer面试题38. 字符串的排列

剑指Offer面试题38. 字符串的排列