字符串全排

  

字符串全排

         对字符串进行全排,就是对去掉某一个字符的字符串进行去全排,全排之后再加上去掉的那个字符。以此类推,对n个长度的字符进行全排,就要对n-1个长度的字符串进行全排,对n-1个长度的字符进行全排,就要对n-2个长度的字符串进行全排、、、、、

并且对每个长度的字符串的排序方式相同,所以要用递归。

代码如下 :

vector<string> permultation(string str)

{

    vector<string>result;

    if (str.size() == 0)

    {

       result.push_back(str);

       return result;

    }

    int len = str.size();

    for (int i = 0; i < len; i++)

    {

       string short_str = str.substr(0, i) + str.substr(i + 1);//获取除了第i项之外的全部字符串

        vector<string>short_arr = permultation(short_str);//对n-1项的字符串进行全排

       int len1 = short_arr.size();

       for (int j = 0; j < len1; j++)//将全排的结果加上该字符串

       {

           string long_word= str[i]+short_arr[j];

           result.push_back(long_word);

       }

    }

    return result;//返回字符串数组

}

上一篇:char 数组里放入 比他大 的int 型数组,编译也可以通过 不会报错,只不过输出为空格


下一篇:WPF 修改屏幕亮度